PythonでNewsAPIから世界54ヵ国のニュースヘッドラインを見る


NewsAPI とは

世界中のトップニュースをJSON形式で取得出来るAPIです。

そこで今回はクリック1つで世界中のニュースヘッドラインをカテゴリ別に見る事が出来るリストを作ってみました。
以下の様にbusiness、technologyとカテゴリ別に世界のニュースをリストします。

取得方法

先ず最初にAPIキーを取得する必要があります。
NewsAPIの仕様と使用方法はGet startedを参照して下さい。

1.スクレイピング
基本的なRequestsを使う方法

import requests
import json

url = ('https://newsapi.org/v2/top-headlines?'
    'country=us&'
    'apiKey=****************')

response = requests.get(url)
json_data=json.loads(response.text)

for k in range(len(data["articles"])):
    dic_data = json_data["articles"][k]["source"]["name"]
    print(dic_data)

2.APIClientを使う方法
どうせなら提供されてるAPIClientを使いましょう。

from newsapi import NewsApiClient

newsapi = NewsApiClient(api_key='******************') #キーはマスクしてます
sources = newsapi.get_sources()

def pr_src(para):
    print(para)

def main():
    # カテゴリのリストを作る
    src_list = ["business","technology","sports"]
    for list in src_list:
        for i in range(len(sources["sources"])):
            dic_data = sources["sources"][i]["category"]
            if dic_data == list:
                pr_src(sources["sources"][i]["country"]+"\n"
                     + sources["sources"][i]["name"]+"\n"
                     + sources["sources"][i]["category"]+"\n"
                     + sources["sources"][i]["url"] +"\n"
                     + sources["sources"][i]["description"]+"\n")

if __name__=='__main__':
    main()

今回は触れませんでしたがdjangoに組み込んでニュース纏めサイトをアップしておくと何時でもどこでもスマホなんかで見れて良いですね。