我试图通过在for循环中迭代requests.get(url)来从stats.nba.com获取信息,其中url在每次迭代时都会更改.如果我只是迭代它一旦它工作,但两次或更多似乎给出错误,我不知道为什么.我是编程的新手,所以任何信息都会有所帮助.提前致谢.这是我的代码:
import requests
import json
team_id = 1610612737
def get_data(url):
response = requests.get(url)
if response.status_code == 200:
data = response.json()
return data
else:
print(response.text)
print(response.status_code)
for i in range(30): # 30 NBA Teams
base_url = "http://stats.nba.com/stats/teamdetails?teamID="
team_url = base_url + str(team_id)
data = get_data(team_url)
## Do stuff ##
team_id +=1
Run Code Online (Sandbox Code Playgroud)
如果我在范围(1)中执行'for i''它可以工作,但如果范围大于1,我会在每次迭代时获得status_code = 400.感谢您的帮助!
该网站限制每秒的请求数,因此您需要包含特定的请求标头或延迟您的脚本(第一个选项是两者中最快且最可靠的选项).
'''
add under team_id = 1610612737
'''
HEADERS = {'user-agent': ('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5)'
'AppleWebKit/537.36 (KHTML, like Gecko)'
'Chrome/45.0.2454.101 Safari/537.36'),
'referer': 'http://stats.nba.com/scores/'}
Run Code Online (Sandbox Code Playgroud)
然后将此添加到您的回复中get:
response = requests.get(url, headers=HEADERS)
Run Code Online (Sandbox Code Playgroud)
*如果使用此方法,则根本不需要延迟脚本.
import time
time.sleep(10) # delays for 10 seconds (put in your loop)
Run Code Online (Sandbox Code Playgroud)
看起来像是使用延迟的命中或未命中,所以除非绝对必要,否则我不建议使用.
| 归档时间: |
|
| 查看次数: |
8902 次 |
| 最近记录: |