1. 使用NewsData的newsdataapi包获取新闻数据,当前免费账号content完整,但在2024年1月15日后会折叠,一次最多只能查10条,需要设置下一页的页码(字符串)才能查其他数据,且每日总计限额200条,只能查询最近48小时新闻
from newsdataapi import NewsDataApiClient
import json
api = NewsDataApiClient(apikey='yourApiKey')
response = api.news_api(q='Russia AND Ukraine', language='en',
timeframe=24, prioritydomain='medium', #最多获取近期48小时新闻
full_content=True, size=10, #full_content为True表明需要完整内容, size最大为10, 每日总计最大200
page='1704077557279615553') #可选,但需要指定下一页的页码才能查找其他数据
save_path = 'NewsData20231231_2.json'
assert save_path.split('.')[-1] == 'json'
with open(save_path, 'w') as file:
json.dump(response, file) #保存为json文件
NewsData部分数据截图:
2.使用GNews的url获取新闻数据,content会折叠,需要付费才能获取完整内容,数据条数远小于NewsData,且每天总计限额100条,可以查较久远的历史新闻
import json
import requests
url = ('https://gnews.io/api/v4/search?'
'q=Russia AND Ukraine&'
'lang=en&'
'max=3&' #每页多少文章, 最大100
'apikey=yourApiKey&'
'page=1&' #page是付费用户才有用
'from=2023-12-31T00:00:00Z&'
'to=2023-12-31T23:59:59Z')
response = requests.get(url)
jsonData = response.json()
save_path = 'gnews20231231_1.json'
assert save_path.split('.')[-1] == 'json'
with open(save_path, 'w') as file:
json.dump(jsonData, file) #保存为json文件
GNews部分数据截图:
3.使用NewsAPI的url获取新闻数据,content会折叠(只保留了200个字符,付费似乎也不能获取完整内容),新闻有一天延迟,且每日总计限额100条,只能查最近一个月的新闻
import json
import requests
url = ('https://newsapi.org/v2/everything?'
'q=Russia AND Ukraine&' #对标题和内容查询关键字
'from=2023-12-30&' #开始时间, 免费版有一天的延迟
'to=2023-12-30&' #结束时间
'language=en&' #语言类型
'sortBy=popularity&' #根据什么排序
'pageSize=3&' #每页多少文章, 最大100
'page=1&' #获取第几页的文章, 默认为1
'apiKey=yourApiKey')
response = requests.get(url)
jsonData = response.json()
save_path = 'NewsAPI_url20231230.json'
assert save_path.split('.')[-1] == 'json'
with open(save_path, 'w') as file:
json.dump(jsonData, file) #保存为json文件
NewsAPI部分数据截图: