繁体   English   中英

Python:requests.get,循环遍历URL

[英]Python: requests.get, iterating url in a loop

我试图通过在for循环中迭代request.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 range(1)中的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/'}

然后添加到您回应get

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

*如果使用此方法,则根本不需要延迟脚本。

延迟方法:

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

似乎使用延迟会导致命中或遗漏,因此除非绝对必要,否则我不建议您使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM