📜  python中的newsapi(1)

📅  最后修改于: 2023-12-03 15:04:34.846000             🧑  作者: Mango

Python中的NewsAPI

简介

NewsAPI是一个提供各种新闻资讯的API,它支持30多种语言,包括英语、中文、法语等,可获取全球各地的新闻。它提供的新闻来自众多的新闻提供商,如BBC、CNN、Reuters等,覆盖了全球各地的新闻,包括政治、经济、体育、科技、健康等各个领域。

使用Python中NewsAPI,我们可以:

  • 获取最新的新闻
  • 根据关键字搜索新闻
  • 按照日期筛选新闻
  • 获取新闻的主题、描述、URL等详细信息
安装

在使用NewsAPI之前,需要安装相应的库:

pip install newsapi-python
配置

使用NewsAPI需要先注册账号,可在官网上申请API key。获取API key之后,可以在代码中进行以下配置:

from newsapi import NewsApiClient

# 初始化NewsApiClient,将API key传入
newsapi = NewsApiClient(api_key='YOUR_API_KEY')
获取最新新闻

可以使用get_top_headlines()方法获取最新新闻。传入的参数包括:

  • country:国家代码,默认为'us'
  • category:新闻分类,默认为空
  • sources:新闻来源,默认为空
  • pageSize:每页新闻数量,默认为20
  • page:页码,默认为1
# 获取最新的20条新闻
top_headlines = newsapi.get_top_headlines()

# 获取中国地区的最新新闻
top_headlines = newsapi.get_top_headlines(country='cn')

返回值是一个dict类型,包含了新闻列表、总数量等信息,如下所示:

{
    'status': 'ok',
    'totalResults': 10,
    'articles': [
        {
            'source': {
                'id': 'cnn',
                'name': 'CNN'
            },
            'author': 'Analysis by Stephen Collinson, CNN',
            'title': 'Biden's gamble on Afghanistan hangs in the balance on 9/11 anniversary',
            'description': "With 20 years of war in Afghanistan alone following the attacks of 9/11, Joe Biden has a chance to reflect on whether the US approach to the world since then has been effective, writes CNN's Stephen Collinson",
            'url': 'https://www.cnn.com/2021/09/06/politics/joe-biden-afghanistan-911/index.html',
            'urlToImage': 'https://cdn.cnn.com/cnnnext/dam/assets/210905182733-01-biden-afghanistan-0905-super-tease.jpg',
            'publishedAt': '2021-09-06T22:24:54Z',
            'content': "Washington (CNN)With the solemnity of the 20th anniversary of 9/11 approaching, President Joe Biden is spending the weekend reflecting on whether the US approach to the world since the terror attacks … [+4664 chars]"
        },
        # 其他新闻...
    ]
}
根据关键字搜索新闻

可以使用get_everything()方法根据关键字搜索新闻。传入的参数包括:

  • q:关键字
  • sources:新闻来源,默认为空
  • domains:新闻域名,默认为空
  • from_param:开始日期,默认为空
  • to:结束日期,默认为空
  • language:新闻语言,默认为空
  • sortBy:新闻排序规则,默认为'publishedAt'
  • pageSize:每页新闻数量,默认为20
  • page:页码,默认为1
# 根据关键字搜索新闻
search_results = newsapi.get_everything(q='covid')

# 根据关键字和新闻来源搜索新闻
search_results = newsapi.get_everything(q='covid', sources='bbc-news')

# 根据日期范围搜索新闻
search_results = newsapi.get_everything(q='covid', from_param='2021-09-01', to='2021-09-06')

返回值与get_top_headlines()相同。

获取新闻详细信息

可以使用get_article()方法获取新闻的详细信息。传入的参数为新闻的URL。

# 获取新闻详细信息
article = newsapi.get_article(url='https://www.bbc.com/news/world-europe-58402823')

返回值是一个dict类型,包含了新闻的标题、作者、内容等详细信息,如下所示:

{
    'source': {'id': None, 'name': 'BBC News'},
    'author': 'BBC News',
    'title': 'Gabby Petito: Body found in Wyoming is missing woman, FBI says',
    'description': 'Gabby Petito disappeared on a road trip with her fiancé. The FBI is investigating her death.',
    'url': 'https://www.bbc.com/news/world-us-canada-58601161',
    'urlToImage': 'https://ichef.bbci.co.uk/news/976/cpsprodpb/1017E/production/_120657027_05e9f9bb-7f8d-438d-82ba-90220e281a1d.jpg',
    'publishedAt': '2021-09-20T14:48:21.3274964Z',
    'content': "image captionGabby's mother Nicole Schmidt thanked the world for their support in a Facebook post on SundayA body found in the US state of Wyoming has been identified as Gabby Petito, a 22-year-old wo… [+4424 chars]"
}
总结

以上就是Python中使用NewsAPI的介绍。NewsAPI提供了丰富的接口,可以获取最新的新闻、搜索新闻、获取新闻的详细信息等,开发者可以根据自己的需求进行调用。如果需要更详细的信息,可以查看官方文档:https://newsapi.org/docs/python-sdk