Python BeautifulSoupでリンクを取得する方法 | スクレイピング入門

※本ページはアフィリエイト広告を利用しています

今回は、Pythonを使用して指定されたWebページをスクレイピングし、そのページ内に存在する全てのリンク(URL)を取得し、それをテキストファイルに保存するプログラムについて解説します。

このプログラムはWebページの構造を解析し、特定の情報を抽出するための基本的なスクレイピング作業を実現します。また、Pythonの基本的な文法やライブラリの使用方法についても触れています。

目次

BeautifulSoupのインストール

BeautifulSoupを使用するのに必要なライブラリのインストール方法は以下の記事で解説しています。事前に済ませておいてください。

BeautifulSoupでページ内のリンクを取得する

“Pythonで指定されたWebページをスクレイピングし、URL一覧を生成、テキストファイルに保存する処理”とは、Pythonのライブラリを活用してWebページのデータを取得し、その中から特定の情報(この場合はURL)を抽出し、それをテキストファイルに保存する一連の作業を指します。

処理のステップ
  1. Webページのデータ取得: requestsライブラリを使用して指定されたURLのWebページからHTMLデータを取得します。
  2. HTMLの解析: 取得したHTMLデータをBeautifulSoupライブラリを使用して解析します。これにより、HTMLの各要素にアクセスして操作することが可能になります。
  3. URLの抽出: 解析したHTMLから<a>タグを検索し、そのhref属性からURLを抽出します。相対URLがあれば絶対URLに変換します。
  4. URLの保存: 抽出したURLをテキストファイルに保存します。Pythonの組み込み関数openを使用してファイルを開き、writeメソッドでURLを書き込みます。

この処理は、Webページから特定の情報を自動的に取得するWebスクレイピングの基本的な手法の一つです。

作成したPythonコード

このプログラムはPythonを使用して指定されたWebページをスクレイピングし、そのページ内に存在する全てのリンク(URL)を取得します。取得したURLは相対URLであれば絶対URLに変換し、その一覧をテキストファイルに保存します。このプログラムはWebページの構造を解析し、特定の情報を抽出するための基本的なスクレイピング作業を実現します。

コード解説

  1. 必要なライブラリをインポートします。このプログラムでは、requests(Webページのデータを取得するため)、BeautifulSoup(HTMLの解析を行うため)、urllib.parse(URLの解析や組み立てを行うため)を使用します。
  2. スクレイピング対象のURLを指定します。このURLからデータを取得します。
  3. requests.get関数を使用して指定したURLからデータを取得します。取得したデータはresponseに保存されます。
  4. 取得したデータ(response.text)をBeautifulSoupオブジェクトに変換します。これによりHTMLの解析が可能になります。
  5. BeautifulSoupオブジェクトのfind_allメソッドを使用して、HTMLから<a>タグを全て検索します。
  6. URL一覧を保存するためのリスト(url_list)を作成します。
  7. <a>タグからhref属性(URL)を取得します。相対URLがあればurllib.parse.urljoin関数を使用して絶対URLに変換します。
  8. 取得したURLをurl_listに追加します。
  9. url_listに保存されたURL一覧をテキストファイルに保存します。open関数を使用してファイルを開き('w'オプションで書き込みモード)、writeメソッドでURLを書き込みます。

作成した全体のソースコード

今回は例として私が運営しているサイトの「」のページを対象に情報を取得します。

# 必要なライブラリをインポートします
import requests
from bs4 import BeautifulSoup
import urllib.parse

# スクレイピング対象のURLを指定します
target_url = 'https://murasan-net.com/index.php/2023/07/20/stable-diffusion-web-ui-extensions-summary/'

# 指定したURLからデータを取得します
response = requests.get(target_url)

# 取得したデータをBeautifulSoupオブジェクトに変換します
soup = BeautifulSoup(response.text, 'html.parser')

# BeautifulSoupオブジェクトから<a>タグを全て検索します
a_tags = soup.find_all('a')

# URL一覧を保存するためのリストを作成します
url_list = []

# 各<a>タグからhref属性(URL)を取得します
for a_tag in a_tags:
    href = a_tag.get('href')
    # 相対URLを絶対URLに変換します
    absolute_url = urllib.parse.urljoin(target_url, href)
    # URLをリストに追加します
    url_list.append(absolute_url)

# URL一覧をテキストファイルに保存します
with open('url_list.txt', 'w') as f:
    for url in url_list:
        f.write(url + '\n')

実行結果

先ほどのコードを実行すると、以下のようにurl_list.txtというファイルが生成され、リンクの一覧を取得することができました。

まとめ

以上、Pythonを使用してWebページをスクレイピングし、URL一覧を生成、テキストファイルに保存するプログラムについて解説しました。

このプログラムは、Webページから特定の情報を自動的に取得するWebスクレイピングの基本的な手法を示しています。Pythonのライブラリを活用することで、このような情報収集作業を効率的に自動化することが可能です。

今後もPythonの力を活用して、さまざまなデータ収集や解析作業を効率化していきましょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

CAPTCHA


目次