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
お問い合わせ先をプロフィールに追加しました。
不明点あれば、そちらにご連絡いただければ幸いです。
この記事が気に入ったらサポートをしてみませんか?