我使用以下代码:
import requests
url = 'http://www.transfermarkt.com/'
r = requests.get(url)
r.raise_for_status()
我有以下输出:
HTTPError: 404 Client Error: Not Found for url: http://www.transfermarkt.com/
但链接通常可以从浏览器中运行。为什么会这样?
答案 0 :(得分:9)
网站管理员已决定该网站应假装不存在于不在其标题中共享其User-Agent的客户端:
>>> import requests
>>> url = 'http://www.transfermarkt.com/'
>>> requests.get(url).raise_for_status()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/site-packages/requests/models.py", line 831, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 404 Client Error: Not Found
随着你的发现而休息。设置用户代理:
>>> headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:39.0)'}
>>> requests.get(url, headers=headers).raise_for_status()
>>>
你很好。
网站管理员似乎并不希望您这样做,所以也许您可以请求权限或询问是否有首选方法来获取内容,但没有设置用户代理是技术原因。