2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Python】Webスクレイピングで重要なニュース記事をピックアップする

Last updated at Posted at 2024-10-30

概要

Pythonを用いてNHKオンラインニュースから重要な時事ニュースと科学記事を取得し、タイトルとURLをcsvに保存する。

当初は、requests及びBeautiful Soupを利用してスクレイピングをする予定であったが、対象サイトがjavascriptを使用して動的にデータを表示していたため、seleniumを利用することにした。

全体のコード

scraping.py
import csv
from selenium import webdriver
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager

def fetch_news(url, news_category, css_selector, css_selector_url, count):
    # ドライバーの設定
    driver = webdriver.Chrome(ChromeDriverManager().install())
    driver.get(url)
    
    # ニュースタイトルを取得
    titles = driver.find_elements(By.CSS_SELECTOR, css_selector)
    # ニュースのURLを取得
    urls = driver.find_elements(By.CSS_SELECTOR, css_selector_url)
    
    # news_dataに必要な情報をリスト形式で保存
    news_data = []
    for i in range(count):
        news_data.append([news_category, i + 1, titles[i].text, urls[i].get_attribute('href')])
    
    # ドライバーを修了し、取得したデータを返す
    driver.quit()
    return news_data

with open('./scraping.csv', 'w', encoding='utf-8-sig', newline='') as csvfile:
    csv_writer = csv.writer(csvfile)
    # csvのヘッダー行を追加
    csv_writer.writerow(['category', 'No', 'title', 'url'])
    
    # アクセス数の多いニュースのタイトルとurlを10件追加
    topic_news = fetch_news('https://www3.nhk.or.jp/news/ranking/access.html', "トピック",
            '#main > article > section > section > ol > ul > li > a > dl > dd > em',
            '#main > article > section > section > ol > ul > li > a', 10)

    # 科学・文化に関するニュースのタイトルとurlを5件追加
    science_news = fetch_news('https://www3.nhk.or.jp/news/cat03.html', "科学・文化", 
            '#main > article.module.module--list-items > section > div > ul > li > dl > dd > a > em',
            '#main > article.module.module--list-items > section > div > ul > li > dl > dd > a', 5)
    
    # fetch_news関数で保存したニュースのリストを追加
    for news in topic_news + science_news:
        csv_writer.writerow(news)

CSS SELECTORの入手方法

1.目的のサイトへ行き、ニュースのタイトル部分を右クリックし、「検証」を選択する。
スクリーンショット (60).png

2.「検証」をクリックすると開発者ツールが表示され、選択箇所のHTMLコードがハイライトされる。
スクリーンショット (61).png

3.ハイライトされたHTMLコードを右クリックし、 Copy > Copy selector の順に選択。
スクリーンショット (62).png

4.コピーされたコードのli部分がli:nth-child(1)となるが、今回はliの要素全体を取得したいため、liに変更する。

# 変更前
'#main > article > section > section > ol > ul > li:nth-child(1) > a > dl > dd > em'

# 変更後
'#main > article > section > section > ol > ul > li > a > dl > dd > em'

結果

category No title url
トピック 1 ドジャース敗れて3勝1敗に ヤンキースが初勝利【詳しく】 https://www3.nhk.or.jp/news/html/20241030/k10014623061000.html
トピック 2 長野 上田 きのこ生産大手「ホクト」工場で火災 消火活動続く https://www3.nhk.or.jp/news/html/20241030/k10014623591000.html
トピック 3 米大統領選 トランプ氏の集会でコメディアンの発言 波紋広がる https://www3.nhk.or.jp/news/html/20241030/k10014623471000.html
トピック 4 男性よりも3割少ない? 女性の“老後リスク”と備え方とは https://www3.nhk.or.jp/news/html/20241029/k10014621311000.html
トピック 5 「マイナ免許証」来年3月24日開始 政府決定 https://www3.nhk.or.jp/news/html/20241029/k10014622591000.html
トピック 6 ドジャース3連勝でワールドシリーズ制覇に王手【一問一答】 https://www3.nhk.or.jp/news/html/20241029/k10014621481000.html
トピック 7 北海道 江別 大学生死亡 “交際相手”の女子大学生など4人逮捕 https://www3.nhk.or.jp/news/html/20241029/k10014622551000.html
トピック 8 【議席確定】衆院選 自民 公明 過半数割る 立民 国民は大幅増 https://www3.nhk.or.jp/news/html/20241027/k10014620511000.html
トピック 9 同性どうしの結婚を認めない法律規定は憲法違反 東京高裁 https://www3.nhk.or.jp/news/html/20241030/k10014623481000.html
トピック 10 自民 無所属当選4人に会派入り要請し了承 さらに2人にも要請 https://www3.nhk.or.jp/news/html/20241030/k10014623881000.html
科学・文化 1 ハロウィーン 渋谷「ハチ公」は封鎖 新宿は?池袋は? https://www3.nhk.or.jp/news/html/20241030/k10014623541000.html
科学・文化 2 鳥インフル 牛からヒトに感染後で性質など変化か 東大など発表 https://www3.nhk.or.jp/news/html/20241030/k10014623211000.html
科学・文化 3 佳子さま 石川県を訪問 地震で被災の人間国宝らと懇談 https://www3.nhk.or.jp/news/html/20241029/k10014623291000.html
科学・文化 4 2025年秋の朝ドラ「ばけばけ」 ヒロインに高石あかりさん https://www3.nhk.or.jp/news/html/20241029/k10014622931000.html
科学・文化 5 将棋 女流王将戦第3局 挑戦者が体調不良で不戦敗 防衛決まる https://www3.nhk.or.jp/news/html/20241029/k10014622701000.html
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?