Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python请求客户端错误:请求不正确,但在浏览器中打开网站后工作_Python_Python 2.7_Python Requests - Fatal编程技术网

Python请求客户端错误:请求不正确,但在浏览器中打开网站后工作

Python请求客户端错误:请求不正确,但在浏览器中打开网站后工作,python,python-2.7,python-requests,Python,Python 2.7,Python Requests,我遇到了一个奇怪的问题,我遇到了一个400客户端错误:对一个我从未打开过的url的错误请求,但是如果我用浏览器打开同一个url,然后关闭它,我突然可以通过请求访问它 这是我的密码: import requests url = 'http://stats.nba.com/stats/boxscore?GameID=0021500669&RangeType=0&StartPeriod=0&EndPeriod=0&StartRange=0&EndRange=0'

我遇到了一个奇怪的问题,我遇到了一个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
回溯(最近一次呼叫最后一次):
文件“stackOverflow.py”,第5行,在
response.raise_for_status()#如果响应无效,则引发异常
文件“C:\Python27\lib\site packages\requests\models.py”,第851行,处于raise_for_状态
引发HTTPError(http\u error\u msg,response=self)
requests.exceptions.HTTPError:400客户端错误:错误的请求
但在我访问了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})

很好,谢谢你。你能解释一下为什么会这样吗?@trentray03,有时候你在提出请求时需要复制一个浏览器,我想因为你首先在浏览器中访问,有基于你的ip存储的信息,所以请求之后工作正常。