【Beautiful Soup】Python × Beautiful SoupでAMDlab Tech Blogをスクレイピング

はじめまして、AMDlabの掛田です。

PythonとBeautiful Soupを使って、AMDlab Tech Blogの記事一覧ページに含まれる記事のタイトルと記事詳細ページURLをスクレイピングするプログラムを紹介します。

Beautiful SoupはHTMLから欲しい情報を抽出するライブラリです(Beautiful SoupがHTMLを取得するわけではない)。

今回は、RequestsライブラリでHTMLを取得してからBeautiful Soupで情報を抽出します。

記事一覧ページの一覧部分はid=”cpt_list”を持つdivタグ内に複数のarticleタグが入っている構造になっていて、articleタグが1記事分の要素です。

今回欲しい情報はarticleタグ内の孫階層にあるaタグです。

aタグのhrefに各記事詳細ページURLとタグ内のテキストにタイトルがあるので、これらを抽出していきます。

バージョン

Python: 3.10.6

Beautiful Soup: 4.11.1

コード

処理全体の流れを解説すると、

  1. Requestsでブログトップページ(1ページ目の記事一覧)のHTMLを取得
  2. 1で取得したHTMLから、1ページ目の記事一覧のタイトルと記事詳細ページURLの他に、2ページ目以降の記事一覧ページURLをページネーション要素から全て抽出しておく
  3. 2で取得した2ページ目以降の記事一覧ページURLをループにかけて、1ページずつ順にHTML取得と情報の抽出を繰り返す
  4. 最終的に全記事のタイトルと記事詳細ページURLの辞書を持つリストが出来上がるので、print()で出力して確認する

また、requests.get()を繰り返し使う場合は、

短い間隔でリクエストが飛んでしまってスクレイピング対象のサイトのサーバーに負荷が掛かってしまわないよう、time.sleep(秒数)で実行間隔をあけておきましょう。

今回はtime.sleep(1)で1秒あけてリクエストを飛ばしています。

実行結果

実行結果はこんな感じ↓ “タイトル: 記事詳細ページURL”の形式で出力できていることが確認できます。

スクレイピングに使えるライブラリは他にもあるので、皆さんもぜひ色々試してデータ収集に活用してみてください。

Tech
python
ARTICLES