我想弄清楚我在这里做错了什么,但我一直迷路……
在 python 2.7 中,我正在运行以下代码:
>>> import requests
>>> req = requests.request('GET', 'https://www.zomato.com/praha/caf%C3%A9-a-restaurant-z%C3%A1ti%C5%A1%C3%AD-kunratice-praha-4/daily-menu')
>>> req.content
'<html><body><h1>500 Server Error</h1>\nAn internal server error occured.\n</body></html>\n'
如果我在浏览器中打开这个,它会正确响应。我正在四处挖掘,发现与 urllib 库类似的库( 500 error with urllib.request.urlopen ),但是我无法适应它,我更想在这里使用请求。
我可能会在这里遇到一些丢失的代理设置,例如这里所建议的( Perl File::Fetch Failed HTTP response: 500 Internal Server Error ),但是有人可以向我解释一下,这个的正确解决方法是什么?
原文由 Kube Kubow 发布,翻译遵循 CC BY-SA 4.0 许可协议
与浏览器请求不同的一件事是用户代理;但是你可以使用这样的请求来改变它:
编辑
某些 Web 应用程序还将检查
Origin
和/或Referer
标头(例如 AJAX 请求);您可以以类似于User-Agent
的方式设置它们。请记住,您将这些标头设置为基本上绕过检查,所以请做一个好网民,不要滥用别人的资源。