Python で Hatena Blog のタイトル取得

Hatena Blog の記事 URL を使って,記事のタイトルを Web スクレイピングで取得する。Web スクレイピングでは,beautifulsoup4 を用いる。

Python とライブラリのバージョン

今回,使用した Python ,ライブラリのバージョンは以下のとおり。

  • beautifulsoup4, Version 4.11.1
  • requests, Version 2.25.1
  • pandas, Version 1.3.5

データの概要

本稿で用いた Google Serach Console より取得した “ページ.csv” のデータには,以下の内容が記載されている。(『目指せ!電気主任技術者~解説ノート』の 2022年1月1日~12月31日までのデータである。)

上位のページ,クリック数,表示回数,CTR,掲載順位
https://electrical-engineer.hatenablog.jp/entry/2021/11/01/060000,3975,21963,18.1%,8.97
https://electrical-engineer.hatenablog.jp/entry/2022/01/07/090000,3776,40965,9.22%,6.8
https://electrical-engineer.hatenablog.jp/entry/2022/01/19/090000,1821,25239,7.22%,7.48
https://electrical-engineer.hatenablog.jp/entry/2022/02/20/090000,1754,7893,22.22%,9.43
https://electrical-engineer.hatenablog.jp/entry/2021/10/29/070000,1735,17063,10.17%,9.12

上位トップ 10 の記事タイトルを取得するコード

上位のページ(以下のコードではトップ 10)の URL の Hatena Blog の記事タイトルを取得するコードを示す。

from bs4 import BeautifulSoup
import requests     # HTTP 通信
import pandas as pd
import time

df = pd.read_csv('ページ.csv', usecols = ['上位のページ','クリック数','表示回数','CTR','掲載順位'], encoding='utf-8')
 # トップ n のページを表示する
n=10
c_url=df['上位のページ'].head(n)

for i in range(len(c_url)):
    r0=requests.get(c_url[i]) 
    soup=BeautifulSoup(r0.text, "html.parser")
    title=soup.find("a",class_="entry-title-link bookmark")
    print("第",i+1,"位:",title.text," : ",df['クリック数'].values[i]) 
    time.sleep(1)

Hatena Blog のタイトル

Hatena Blog 記事の HTML で記事タイトルは以下のように記載されている。(以下の HTML では,記事 URL を “#” に変更。)

<h1 class="entry-title">
    <a href="#" class="entry-title-link bookmark">
        電力系統の中性点接地の目的と方式
    </a>
</h1>

タグが a,class が entry-title-link bookmark であるものを探す。そのタグで囲まれたテキストをタイトルとして取得している。これは,先に示した Python コードの以下の記述である。

title=soup.find("a",class_="entry-title-link bookmark")

コードの実行結果

上記のコードを実行した結果を以下に示す。上記のコードでは,順位,記事のタイトル,クリック数を出力している。

第 1 位: 電力系統の短絡容量  :  3975
第 2 位: 電力系統の中性点接地の目的と方式  :  3776
第 3 位: 同期発電機の特性曲線  :  1821
第 4 位: 同期発電機のリアクタンス  :  1754
第 5 位: 電力系統の中性点接地による異常電圧抑制  :  1735
第 6 位: 電力用変圧器の損失と効率  :  1724
第 7 位: 保護リレーシステム  :  1555
第 8 位: 変圧器の負荷時タップ切換装置  :  1545
第 9 位: 変圧器の並行運転  :  1352
第 10 位: 三相変圧器における巻線の結線方式  :  1312

更新履歴

  • 2023年1月10日 新規作成
  • 2024年2月9日 Hatena Blog 記事の HTML を追加
  • 2024年3月3日 コードブロックにタイトルを追加

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です