概要
色々なサイトを見ているときに、
「ここは結局、何をどんな感じに提供してくれているサイトなの?」
と感じる時があります。
それを解消する、サイト構成を手早く確認する為のTipsです。
やったこと
大概のサイトには「サイトマップ」のページが公開されていて、
その殆どは、TOPページにリンクが設けられていると思います。
この「サイトマップ」を見れば、
そのサイトのことはだいたいわかるはずなので、
「サイトマップ」をGETして「BeautifulSoup」でaタグをかき集めてみます。
手順
以下の流れとなります。
(1) 対象サイトのサイトマップをGETする
(2) BeautifulSoupで対象ページのaタグを抜き出す
(3) aタグをリンク部とテキスト部に分けていく
(4) テキスト出力
実装
手短です。エラーケースとかはもう少し拡充した方がよいかも。
from bs4 import BeautifulSoup
import requests
urls = ''
path = './urls.txt'
# 対象サイトのサイトマップをGETする
r = requests.get("https://xxxxx..../sitemap")
c = r.content
# BeautifulSoupで対象ページのaタグを抜き出す
bs = BeautifulSoup(c, "html.parser")
a_list = bs.select("a")
# aタグをリンク部とテキスト部に分けていく
for a in a_list:
name = a.get_text()
link = a.get("href")
urls += name + ':' + link
urls += '\n'
print(link, "\t", name)
# テキスト出力
with open(path, mode='w', encoding='UTF-8') as f:
f.write(urls)
※ テキスト出力結果は、サイト構成によってマチマチですので割愛します。
まとめ
上記ソースコードでやっていることは、
「ブラウザでサイトマップを1回開いた後、エディタでソースを開いてaタグをかき集める」
という作業を自動化した、というものです。
GETリクエストを1回投げているだけですので、
よそ様のサーバに無用な負荷をかけるといったこともないはず。
使いどころはチョイチョイあるかなと感じています。
参考
PythonとBeautiful Soupでスクレイピング
https://qiita.com/itkr/items/513318a9b5b92bd56185