gpt4 book ai didi

Python:requests.get,循环迭代url

转载 作者:太空狗 更新时间:2023-10-29 21:05:12 25 4
gpt4 key购买 nike

我试图通过在 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

如果我执行 'for i in range(1):' 它会起作用,但如果范围大于 1,我每次迭代都会得到 status_code = 400。感谢您的帮助!

最佳答案

该网站限制每秒请求数,因此您需要包含特定的请求 header 或在您的脚本中设置延迟(第一个选项是两者中最快且可能最可靠的选项)。

标题方法:

'''
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/'}

然后将此添加到您的响应 get:

response = requests.get(url, headers=HEADERS)

*如果您使用此方法,则根本不需要在脚本中进行延迟。

延时方法:

import time
time.sleep(10) # delays for 10 seconds (put in your loop)

<罢工> 似乎使用延迟是偶然的,所以除非绝对必要,否则我不建议使用。

关于Python:requests.get,循环迭代url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36853651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com