首页 > 解决方案 > 在循环不同日期时获取重复数据以每天从 NewsApi 获取 100 篇文章(免费版本限制)

问题描述

我正在尝试使用 NewsApi 来制作我的原始数据集。NewsApi 的免费版本每个请求仅限制 100 篇文章,最长可保存 30 天。我编写了函数来循环遍历 30 天期间的每一天,以收集总共 3000 篇文章(每天 100 篇)。然而,似乎很多文章都是重复的。我不明白我哪里出错了,有人可以帮我解决这个问题吗?这是我的代码:

def last_30_days(date):                  # function to calculate last 30 days
    date_list = [date - timedelta(days=x) for x in range(30)]
    return sorted(date_list)

def from_date(x):                                           # function to calculate the from_param
    from_date=[]
    for i in range(len(x)):
        from_date.append(last_30_days(datetime.today())[i-1].date())
    return from_date

def to_date(x):                                         # function to calculate the to_param
    to_date=[]
    for i in range(len(x)):
        to_date.append(last_30_days(datetime.today())[i].date())
    return to_date
    

from_date_list = from_date(last_30_days(datetime.today()))
to_date_list = to_date(last_30_days(datetime.today()))

api_key_1 = 'XXXXXXXXXXXXXXXXX'
url = 'http://newsapi.org/v2/everything?'

parameters_1 = {
    'q':'covid OR coronavirus OR pandemic',
    'apiKey':api_key_1,
    'language': 'en',
    'pageSize': 100,
    'page_number':1,
    'sort_by': 'publishedAt',
    'from':from_date,
    'to':to_date
}

data_1 = pd.DataFrame()

for (from_date, to_date) in zip(from_date_list, to_date_list):
    response = requests.get(url, params=parameters_1)    
    response_json = response.json()
    d1 = json_normalize(response_json['articles'])
    data_1 = data_1.append(d1)
data_1

标签: python

解决方案


推荐阅读