Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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:requests.get,在循环中迭代url_Python_Python 2.7 - Fatal编程技术网

Python:requests.get,在循环中迭代url

Python:requests.get,在循环中迭代url,python,python-2.7,Python,Python 2.7,我试图通过在for循环中迭代requests.get(url)来从stats.nba.com获取信息,其中url在每次迭代中都会更改。如果我只是迭代一次,但两次或两次以上似乎会出现错误,我不知道为什么。我是编程新手,所以任何信息都会有帮助。提前谢谢。这是我的密码: import requests import json team_id = 1610612737 def get_data(url): response = requests.get(url) if respons

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

如果我对范围(1)中的I执行“操作”:“它可以工作,但是如果范围大于1,则每次迭代我都会得到状态_code=400。谢谢你的帮助

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

标题方法: 然后将此添加到您的响应
get

response = requests.get(url, headers=HEADERS)
*如果使用此方法,则脚本中根本不需要延迟

延迟方法:
使用延迟似乎是偶然的,所以除非绝对必要,否则我不建议使用。

有时我甚至无法通过浏览器获得结果-需要多次重新加载页面。到目前为止,我得到的最远结果是
range(4)
即使使用range(1)或任何ID,我也得不到可复制的结果。在我这方面,这似乎是相当随机的。啊,是的,这一定是它-我试图延迟3秒,但没有帮助。@Bahrom:哦,我的糟糕,我忘记了。。。非常感谢你的投票!不用担心,很好的回答:谢谢!headers方法对我有效,但是delay方法不行。非常感谢!
response = requests.get(url, headers=HEADERS)
import time
time.sleep(10) # delays for 10 seconds (put in your loop)