我使用以下代码:
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/
但链接通常可以从浏览器中运行.为什么会这样?
站点管理员已决定该站点应假装不存在于不在其标头中共享其User-Agent的客户端:
>>> import requests >>> url = 'http://www.transfermarkt.com/' >>> requests.get(url).raise_for_status() Traceback (most recent call last): File "", line 1, in 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() >>>
而且你很好.
看起来网站管理员不希望你这样做,所以也许你可以请求许可或询问是否有一种获取内容的首选方式,但没有用户代理设置是技术原因.