見出し画像

python:BeautifulSoupを使ってYahooNewsをCSV化しよう

スクレイピングで便利なライブラリBeautifulSoupを使って、YahooNewsをスクレイピングして、最終的にCSVに書き込んでみましょう。

対象URL

処理フロー

①Yahooニュースへアクセス

②YahooニュースのHTMLを取得・解析

③②から必要な情報をピックアップ

④③のデータをCSVへ書き込む

コード全体図

import requests
from bs4 import BeautifulSoup
import csv

news_category = input("欲しいカテゴリのニュースを入力してください:")
csv_list = []

def data_get(category):
   """
   データを取得する
   
   """
   url = 'https://news.yahoo.co.jp/categories/' + category
   response = requests.get(url)
   bs = BeautifulSoup(response.text,'html.parser')
   ul_tag = bs.find_all(class_="topicsList_main")
   return ul_tag
   
   
def data_print(data):
   """
   データを表示させる
   
   """
   news = '-----------------------------------'
   csv_list.append([news])
   for li_tag in data[0]:
       title = li_tag.a.getText()
       url2 = li_tag.a.get("href")
       csv_list.append([title,url2])
       print(title,url2)
       
       
def data_write():
   """
   データをCSVに書き込む
   
   """
   f = open("output.csv", "a",newline="",encoding='utf-8_sig')
   writecsv = csv.writer(f, lineterminator='\n')
   writecsv.writerows(csv_list)
   f.close()
       
     
def main():
   """
   各関数を実行する
   
   """
   data_get(news_category)
   data_print(data_get(news_category))
   data_write()

if __name__ == '__main__':
  main()


実行結果

キャプチャ

キャプチャ

※何回か実行してます

キャプチャ

カテゴリは上記のタブを入力していただき、URLの最後に記載される名称を入力すればOKです。ex)経済であれば、business となります。

キャプチャ

BeautifulSoup説明書

便利なライブラリのBeautifulSoupの説明は以下に記載されています。

わかりにくければ、簡単に解説してくれる方も多くいるのでGoogleで検索かけてみてください。

過去記事

お問い合わせ先

msydsss@yahoo.co.jp

お問い合わせ先をプロフィールに追加しました。

不明点あれば、そちらにご連絡いただければ幸いです。

この記事が気に入ったらサポートをしてみませんか?