我创建了一个简单的heroku应用程序,它以url作为参数,读取url数据并在浏览器中显示它。这是代码:
import os
from flask import Flask
import urllib2, urlparse
app = Flask(__name__)
@app.route('/<url>')
def getdata(url):
url.replace('www.','')
if url.count('http') == 0:
url = 'http://'+url
u = urlparse.urlparse(url)
nurl = u.geturl()
response = urllib2.urlopen(nurl).read()
return response
if __name__ == '__main__':
port = int(os.environ.get('PORT', 5000))
app.run(host='0.0.0.0', port=port)
当传递像google.com
这样的网址时,它可以正常工作。但是当传递类似google.com/images
的东西(我知道url返回503)时,它会抛出404错误。当我尝试在我的python shell中正常阅读郊区时它工作得很好。
为什么会发生这种情况?如何解决?
答案 0 :(得分:5)
尝试使用path option in the @route
。以下内容应该有效:
@app.route('/<path:url>')
def getdata(url):
...