PythonでWebページからすべてのURLを抽出する

PythonでWebページからすべてのURLを抽出してみます。

今回WebページからすべてのURLを抽出するために、Beautiful Soup(bs4)モジュールと、requestsモジュールを使用します。この2つのモジュールは、Pythonの標準ライブラリではありませんので、事前にインストールする必要はありません。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■WebページからすべてのURLを抽出する

では、早速WebページからすべてのURLを抽出するスクリプトを書いていきます。

■コード

import requests
from bs4 import BeautifulSoup

#URLを指定
url = "https://laboratory.kazuuu.net/sitemaps/"

#GETリクエストを送信
reqs = requests.get(url)

#URLをテキスト化し、解析を行う。その後BeautifulSoupオブジェクトを作る
soup = BeautifulSoup(reqs.text, 'html.parser')

#空のurlsのリストを用意
urls = []

#全てのaタグをループ処理し、hrefで指定されたURLを出力する
for link in soup.find_all('a'):
    print(link.get('href'))

Beautiful Soup(bs4)モジュールと、requestsモジュールを呼び出して、urlという変数を作成し、すべてのURLを抽出したいWebページのURLを指定します。今回は当サイトのサイトマップ(https://laboratory.kazuuu.net/sitemaps/)を指定しています。

指定後、reqsという変数を作成し、requests.get()で括弧内にURLを指定し、GETリクエストを送信します。

送信後、soupという変数を作成し、BeautifulSoup()で、GETリクエストを送信し、返ってきた結果で解析を行います。

解析したものの中から全てのaタグをループ処理し、hrefで指定されたURLを抽出し、urlsの空のリストに格納し、print関数で出力します。

■実行

今回のスクリプトを「extract_allurls.py」という名前で保存し、コマンドプロンプトから実行してみます。

実行してみると、今回指定したサイトマップのページ内にある全てのURLが抽出され出力されることを確認できました。

コメント

タイトルとURLをコピーしました