Python请求包返回与浏览器

时间:2015-12-14 18:34:59

标签: python python-requests

我使用以下代码:

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/

但链接通常可以从浏览器中运行。为什么会这样?

1 个答案:

答案 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()
>>>

你很好。

网站管理员似乎并不希望您这样做,所以也许您可以请求权限或询问是否有首选方法来获取内容,但没有设置用户代理是技术原因。