首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python应用程序直接返回不同于python的字符串(爬行)。

Python应用程序直接返回不同于python的字符串(爬行)。
EN

Stack Overflow用户
提问于 2018-01-18 09:32:11
回答 1查看 85关注 0票数 0

我已经发现了一个奇怪的东西,在一个酒瓶应用程序,我正在工作。Flask的目的是接收新闻文章url,抓取它(使用报纸库),并预测爬行文本的类别。

但是,我在Python (Spyder)中直接运行Crawler,它返回文章文本,就像预期的那样。

代码语言:javascript
复制
from newspaper import Article

url='https://www.dev-insider.de/index.cfm?pid=15010&pk=676039'
article = Article(str(url) , browser_user_agent = 'Chrome', http_success_only=False)
article.download()
article.parse()
print(article.text)

这就像一种魅力。如果我现在在Flask应用程序中运行同一段代码,它会生成一些属于爬行url导航的其他字符串:

代码语言:javascript
复制
from flask import Flask
from newspaper import Article
from flask import request

app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False
app.config['MAX_CONTENT_LENGTH'] = 1000000

#url='https://www.dev-insider.de/index.cfm?pid=15010&pk=676039'
@app.route('/test')
def bla():
    url = request.args.get('url')    
    article = Article(str(url) , browser_user_agent = 'Chrome', http_success_only=False)
    article.download()
    article.parse()
    text_raw = article.text
    return text_raw

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

基本上,第一个片段返回完整的文章文本,而secon片段返回:

Sie befinden sich hier: DevOps > Configuration-Management sind noch nicht angemeldet Login _ Registrierung通讯

我希望我把问题弄清楚了。如果不是这样,请告诉我。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-18 12:06:42

如果要将url作为查询字符串传递,则需要确保url已正确编码并在代码中再次解码。这意味着你会用以下方式调用这个应用程序:

代码语言:javascript
复制
http://localhost/test?=https%3A%2F%2Fwww.dev-insider.de%2Findex.cfm%3Fpid%3D15010%26pk%3D676039

据我所知,烧瓶已经为您解码查询字符串,因此它应该是好的,您不需要自己解码。

URL规范描述了应该如何格式化URL。如果您只是粘贴一个URL没有编码,它基本上破坏了格式。

RFC-1738说:

HTTP的形式如下: http:///

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48317899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档