今回は、Pythonを使用して指定されたWebページをスクレイピングし、そのページ内に存在する全てのリンク(URL)を取得し、それをテキストファイルに保存するプログラムについて解説します。
このプログラムはWebページの構造を解析し、特定の情報を抽出するための基本的なスクレイピング作業を実現します。また、Pythonの基本的な文法やライブラリの使用方法についても触れています。
BeautifulSoupのインストール
BeautifulSoupを使用するのに必要なライブラリのインストール方法は以下の記事で解説しています。事前に済ませておいてください。
BeautifulSoupでページ内のリンクを取得する
“Pythonで指定されたWebページをスクレイピングし、URL一覧を生成、テキストファイルに保存する処理”とは、Pythonのライブラリを活用してWebページのデータを取得し、その中から特定の情報(この場合はURL)を抽出し、それをテキストファイルに保存する一連の作業を指します。
- Webページのデータ取得:
requests
ライブラリを使用して指定されたURLのWebページからHTMLデータを取得します。 - HTMLの解析: 取得したHTMLデータを
BeautifulSoup
ライブラリを使用して解析します。これにより、HTMLの各要素にアクセスして操作することが可能になります。 - URLの抽出: 解析したHTMLから
<a>
タグを検索し、そのhref
属性からURLを抽出します。相対URLがあれば絶対URLに変換します。 - URLの保存: 抽出したURLをテキストファイルに保存します。Pythonの組み込み関数
open
を使用してファイルを開き、write
メソッドでURLを書き込みます。
この処理は、Webページから特定の情報を自動的に取得するWebスクレイピングの基本的な手法の一つです。
作成したPythonコード
このプログラムはPythonを使用して指定されたWebページをスクレイピングし、そのページ内に存在する全てのリンク(URL)を取得します。取得したURLは相対URLであれば絶対URLに変換し、その一覧をテキストファイルに保存します。このプログラムはWebページの構造を解析し、特定の情報を抽出するための基本的なスクレイピング作業を実現します。
コード解説
- 必要なライブラリをインポートします。このプログラムでは、
requests
(Webページのデータを取得するため)、BeautifulSoup
(HTMLの解析を行うため)、urllib.parse
(URLの解析や組み立てを行うため)を使用します。 - スクレイピング対象のURLを指定します。このURLからデータを取得します。
requests.get
関数を使用して指定したURLからデータを取得します。取得したデータはresponse
に保存されます。- 取得したデータ(
response.text
)をBeautifulSoup
オブジェクトに変換します。これによりHTMLの解析が可能になります。 BeautifulSoup
オブジェクトのfind_all
メソッドを使用して、HTMLから<a>
タグを全て検索します。- URL一覧を保存するためのリスト(
url_list
)を作成します。 - 各
<a>
タグからhref
属性(URL)を取得します。相対URLがあればurllib.parse.urljoin
関数を使用して絶対URLに変換します。 - 取得したURLを
url_list
に追加します。 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の力を活用して、さまざまなデータ収集や解析作業を効率化していきましょう。
コメント