我遇到一个奇怪的问题,我收到一个400客户端错误:对一个我从未打开过的URL的错误请求,但是如果我用浏览器打开相同的URL然后关闭它,我突然就能通过请求访问它。
这是我的代码:
import requests
url = 'http://stats.nba.com/stats/boxscore?GameID=0021500669&RangeType=0&StartPeriod=0&EndPeriod=0&StartRange=0&EndRange=0'
response = requests.get(url)
response.raise_for_status() # raise exception if invalid response
data = response.json()['resultSets'][0]['rowSet']
print data
如果在通过浏览器访问网站之前运行此程序,则会收到此错误:
Traceback (most recent call last):
File "stackOverflow.py", line 5, in <module>
response.raise_for_status() # raise exception if invalid response
File "C:\Python27\lib\site-packages\requests\models.py", line 851, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 400 Client Error: Bad Request
但是,当我访问chrome中的url,然后再次运行它时,我得到了我想要的列表。
我的第一个想法是,也许NBA阻止了某些类型的请求,是吗?
谢谢你的帮助。
通过一个用户代理,它将起作用:
u_a = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36"
response = requests.get(url, headers={"USER-AGENT":u_a})
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句