如何使用NewsAPI遍历所有分页结果,获取全部指定主题新闻文章?
遍历NewsAPI所有搜索结果的实现方法
要批量获取NewsAPI的全部搜索结果,核心是先拿到总结果数,再按分页循环请求每一页,具体操作如下:
实现步骤
- 先发起一次初始请求(默认返回第一页),从响应里提取
totalResults字段,这是匹配搜索条件的总文章数量 - 计算总页数:因为API每页最多返回100条,总页数可以用整数运算
(总结果数 + 99) // 100来实现向上取整 - 循环遍历每一页,从第1页到计算出的总页数,每次请求传入对应的
page参数,把所有页的文章数据合并收集
完整代码示例
from newsapi import NewsApiClient # 初始化API客户端 newsapi = NewsApiClient(api_key='Your_API_Key') # 定义统一的搜索参数 search_config = { "q": "election AND (British OR England OR Britain OR (United AND Kingdom))", "language": "en", "from_param": "2024-05-12", "to": "2024-05-13" } # 获取第一页数据,同时拿到总结果数 first_page_data = newsapi.get_everything(**search_config) total_articles = first_page_data['totalResults'] all_articles = first_page_data['articles'] # 计算需要请求的总页数 total_pages = (total_articles + 99) // 100 # 从第2页开始循环请求后续页面 for page_num in range(2, total_pages + 1): current_page_data = newsapi.get_everything(**search_config, page=page_num) all_articles.extend(current_page_data['articles']) # 验证收集结果 print(f"共收集到 {len(all_articles)} 篇符合条件的文章")
场景说明
比如你提到的totalResults=119的情况,总页数计算为(119+99)//100=2,会自动请求第1页(100条)和第2页(19条),最终合并得到全部119篇文章。
注意:NewsAPI免费版有请求次数限制,批量请求时建议适当添加请求间隔,避免触发限流。
内容的提问来源于stack exchange,提问作者Kaitlin
相关产品推荐
相关产品推荐

