我已经发现了一个奇怪的东西,在一个酒瓶应用程序,我正在工作。Flask的目的是接收新闻文章url,抓取它(使用报纸库),并预测爬行文本的类别。
但是,我在Python (Spyder)中直接运行Crawler,它返回文章文本,就像预期的那样。
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导航的其他字符串:
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通讯
我希望我把问题弄清楚了。如果不是这样,请告诉我。
有什么想法吗?
发布于 2018-01-18 12:06:42
如果要将url作为查询字符串传递,则需要确保url已正确编码并在代码中再次解码。这意味着你会用以下方式调用这个应用程序:
http://localhost/test?=https%3A%2F%2Fwww.dev-insider.de%2Findex.cfm%3Fpid%3D15010%26pk%3D676039据我所知,烧瓶已经为您解码查询字符串,因此它应该是好的,您不需要自己解码。
URL规范描述了应该如何格式化URL。如果您只是粘贴一个URL没有编码,它基本上破坏了格式。
RFC-1738说:
HTTP的形式如下: http:///
https://stackoverflow.com/questions/48317899
复制相似问题