使用 Python 的请求库时,对合法 url 的 400 错误请求
400 Bad Request for legitimate url when using Python's Request library
我正在尝试使用 Python 的请求库从对 requests.get():
的调用中获取 JSON 对象
import requests
url = 'http://stats.nba.com/stats/boxscoretraditionalv2'+\
'?EndPeriod=10&EndRange=28800&GameID=0021500893&RangeType=0'+\
'&Season=2015-16&SeasonType=Regular+Season&StartPeriod=1'+\
'&StartRange=0'
# is the auth necessary?
response = requests.get(url, auth=('user', 'pass'))
我得到以下异常:
Traceback (most recent call last):
File "sample.py", line 22, in <module>
response.raise_for_status() # raise exception if invalid response
File "/Library/Python/2.7/site-packages/requests/models.py", line 840, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 400 Client Error: Bad Request for url: http://stats.nba.com/stats/boxscoretraditionalv2?EndPeriod=10&EndRange=28800&GameID=0021500893&RangeType=0&Season=2015-16&SeasonType=Regular+Season&StartPeriod=1&StartRange=0
我需要做什么才能解决这个问题? link 有效 - 如果通过 Chrome.
查看,它只是将 JSON 和 returns 渲染为 200 OK
将 headers 添加到您的请求中:
import requests
url = 'http://stats.nba.com/stats/boxscoretraditionalv2'+\
'?EndPeriod=10&EndRange=28800&GameID=0021500893&RangeType=0'+\
'&Season=2015-16&SeasonType=Regular+Season&StartPeriod=1'+\
'&StartRange=0'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:39.0) Gecko/20100101 Firefox/39.0'}
response = requests.get(url, headers=headers)
NBA.com 的管理员决定向没有 User-Agent 看起来像普通浏览器的用户发送 HTTP 400(可能是为了减少抓取)。
我正在尝试使用 Python 的请求库从对 requests.get():
的调用中获取 JSON 对象import requests
url = 'http://stats.nba.com/stats/boxscoretraditionalv2'+\
'?EndPeriod=10&EndRange=28800&GameID=0021500893&RangeType=0'+\
'&Season=2015-16&SeasonType=Regular+Season&StartPeriod=1'+\
'&StartRange=0'
# is the auth necessary?
response = requests.get(url, auth=('user', 'pass'))
我得到以下异常:
Traceback (most recent call last):
File "sample.py", line 22, in <module>
response.raise_for_status() # raise exception if invalid response
File "/Library/Python/2.7/site-packages/requests/models.py", line 840, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 400 Client Error: Bad Request for url: http://stats.nba.com/stats/boxscoretraditionalv2?EndPeriod=10&EndRange=28800&GameID=0021500893&RangeType=0&Season=2015-16&SeasonType=Regular+Season&StartPeriod=1&StartRange=0
我需要做什么才能解决这个问题? link 有效 - 如果通过 Chrome.
查看,它只是将 JSON 和 returns 渲染为 200 OK将 headers 添加到您的请求中:
import requests
url = 'http://stats.nba.com/stats/boxscoretraditionalv2'+\
'?EndPeriod=10&EndRange=28800&GameID=0021500893&RangeType=0'+\
'&Season=2015-16&SeasonType=Regular+Season&StartPeriod=1'+\
'&StartRange=0'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:39.0) Gecko/20100101 Firefox/39.0'}
response = requests.get(url, headers=headers)
NBA.com 的管理员决定向没有 User-Agent 看起来像普通浏览器的用户发送 HTTP 400(可能是为了减少抓取)。