使用纽约时报 API,无返回

问题描述 投票:0回答:1

我尝试从《纽约时报》获取新闻文章,但没有返回。完全没有反应。我在网络浏览器上对 URL 进行了故障排除和测试,它确实返回了新闻文章。在《纽约时报》开发人员的“PATHS”页面上,它还为我的 API 返回了 200。不知道是不是因为这两个月我想要的新闻文章太大,sleep时间不够,限制了API速率?有人可以帮我修改我的代码吗?

api_key = "my_NYT_api_key"
query = "Israel Palestine"
filter_query = "news_desk:(\"Foreign\"OR \"Politics\" OR \"World\") AND type_of_material:(\"News\" OR \"Article\") AND pub_date:([2023-10-07 TO 2023-11-21]) "
page = "0"
sort = "relevance"
facet_fields = "news_desk,section_name"
def send_request(query, filter_query, facet_fields, api_key):
   base_url = "https://api.nytimes.com/svc/search/v2/articlesearch.json"
   url = (f"{base_url}?q={query}&fq={filter_query}&facet_fields=facet_fields}&page={page}&sort={sort}&"
          f"facet=true&facet_filter=true&api-key={api_key}")
   headers = {
       'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36',
       'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
   }
   response = requests.get(url, headers=headers)
   print("HTTP Status Code:", response.status_code)  # Check HTTP status
   print("Raw Response:", response.text)  # Print raw response text
   time.sleep(6)
   return response.json()


def parse_response(response):
   data = {
       'headline': [],
       'pub_date': [],
       'web_url': [],
       'image_url': [],
       'timestamp': [],
   }

   articles = response['response']['docs']
   for article in articles:
       data['headline'].append(article['headline']['main'])
       data['pub_date'].append(article['pub_date'])
       data['web_url'].append(article['web_url'])
       data['timestamp'].append(article['pub_date'])

       multimedia = article.get('multimedia', [])
       image_url = multimedia[0]['url'] if multimedia else 'No image'
       data['image_url'].append(image_url)

   return pd.DataFrame(data)
def get_data(query, filter_query, facet_fields, api_key):
   response = send_request(query, filter_query, facet_fields, api_key)
   if response:  # Check if response is not empty
       df = parse_response(response)
       print(f"Number of articles collected: {len(df)}")
       return df
   else:
       print("No data received")
       return pd.DataFrame()

不知道是不是因为我一天请求次数太多(虽然从来没有返回任何文章)?这就是为什么 NYT 限制我的 api 密钥的速率?

python json newsletter no-response
1个回答
0
投票

我也有同样的问题。在 NYTs API 的常见问题解答中,您可以找到以下内容:

  1. API调用有限制吗? 是的,每个 API 有两个速率限制:每天 500 个请求和每分钟 5 个请求。您应该在两次通话之间休息 12 秒,以避免达到每分钟的速率限制。如果您需要更高的速率限制,请通过 [email protected] 与我们联系。
© www.soinside.com 2019 - 2024. All rights reserved.