使用NewsAPI.org通过HTTP请求传递多个关键字

时间:2018-02-13 18:03:27

标签: python

编辑:对于那些遇到同样问题的人来说,事实证明top_headlines不支持多个关键字,这是一个无赖。以下是多个关键字的工作代码,其中包含“所有内容”而不是“头条新闻”。

keywords = ["warriors", "spurs"]

url = ('https://newsapi.org/v2/everything?q=' + ' OR '.join(keywords)) + '&language=en' + '&apiKey=' + api_key + '&pageSize=100'

response = requests.get(url)

这会返回很多,因为,你知道,'一切'。查看'from'和'to'参数以限制返回。

OP从这里开始

我目前正在尝试从新闻聚合NewsAPI.org获取包含某些关键字的热门文章。

如果我只提供一个关键字,它可以完美运行,下面是示例代码:

keywords = ["trump"]

url = ('https://newsapi.org/v2/top-headlines?q=' + ','.join(keywords)) + '&language=en' + '&apiKey=' + api_key + '&pageSize=100'

response = requests.get(url)

for article in response.json()['articles']:
    print(article['title'])

print(url)

print(response.json()['totalResults'])

但对于我的生活,我无法弄清楚如何将多个关键字传递给此请求。我已尝试加入列表的每个变体,它只是不会合作。

目标是能够在关键字列表中添加另一个字符串,例如:

keywords = ["trump","bitcoin"]

然后让代码返回包含特朗普或比特币的所有标题。我得到的最接近的是返回包含两个关键字的标题,但我不能让它返回其中一个。

我尝试用我能想象到的每一种策略加入这些字符串('+','','&','& q ='等),我无法理解。不知道该怎么办。有什么提示吗?

1 个答案:

答案 0 :(得分:1)

News API documentation显示了为“Everything”端点执行此操作的方法:

  

此处支持高级搜索:

     

...

     
      
  • 或者,您可以使用AND / OR / NOT关键字,并可选择将这些关键字与括号分组。例如:crypto AND (ethereum OR litecoin) NOT bitcoin
  •   
     

q的完整值必须为网址编码

“头条新闻”的文档中没有此类信息,这似乎暗示“顶级标题”端点不支持高级搜索。