【发布时间】:2018-05-12 04:05:46
【问题描述】:
我想从 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)
【问题讨论】:
标签: python json api web-scraping get