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が抽出され出力されることを確認できました。
コメント