我希望从2017年12月发布的themoviedb.org api获取所有电视节目ID。大约有3676页的json数据。我可以在每个api请求中访问单个页面。因此,要遍历3676页数据,我必须在循环中生成大量的api请求,这需要花费大量时间。是否有更快的方法来避免循环播放2017年12月发布的所有电视节目ID?下面是我在python中的代码:
import requests
import json
#tv urls
baseTvUrl = 'http://api.themoviedb.org/3/discover/tv?release_date.gte=2017-12-01&release_date.lte=2017-12-31&' + api_key
baseCreditUrlTv = 'https://api.themoviedb.org/3/tv/'
baseCreditUrl2 = '/credits?' + api_key
myResponseTv = requests.get(baseTvUrl)
if(myResponseTv.ok):
Data = json.loads(myResponseTv.content.decode('utf-8'))
total_pages_tv = Data['total_pages']
tv_ids = {*()}
print(total_pages_tv)
#Method to get all the tv id's by iterating through all the pages
for page in range(total_pages_tv):
page = page+1
#print(page)
tvUrlPage = baseTvUrl + '&page=' + str(page)
myResponseTv = requests.get(tvUrlPage)
if(myResponseTv.ok):
Data = json.loads(myResponseTv.content.decode('utf-8'))
for results in Data['results']:
if(results is not None):
#print(type(results))
for key, value in results.items():
if(key=='id'):
#print(key, 'is:', value)
tv_ids.add(value)
print(tv_ids)
答案 0 :(得分:0)
您可以尝试使用scrapy。
您需要创建一个蜘蛛,在设置中,您可以修改CONCURRENT_REQUESTS
。它会更快。如果您还没有使用scrapy,我建议您从以下链接开始https://doc.scrapy.org/en/latest/intro/tutorial.html