no-image

【超簡単】サイトのURL一覧を取得する|Pytonでスクレイピング

今朝はスクレイピングを復習して、このブログのURLの一覧を取得しました。
使ったのは、Pythonとbeautiflsoupです。

ゴールはこちら。

スクレイピングに関する過去記事の復習です。
Python初心者が、BeautifulSoupではてぶ人気記事をWEBスクレイピング
BeautifulSoup×Pythonで、初心者でも10分でできるRSSスクレイピングを解説

ソースコード

まずはコード全文貼っておきます。
動かすにはpipでbs4をインストールしておく必要があります。

	from urllib.request import urlopen
	from bs4 import BeautifulSoup


	def getLinks(articleUrl):
		html = urlopen("https://yukituna.com/sitemap/")
		bsObj = BeautifulSoup(html, "html.parser")
		return bsObj.find("ul", {"id": "sitemap_list"}).findAll("a")


	links = getLinks("")
	for link in links:
		print(link)

使い方

別段難しいところはないのでざっくりと。

まず自分のブログのサイトマップにアクセスし、データを引っ張ってきます。

html = urlopen(“https://yukituna.com/sitemap/”)
この行ですね。

これで変数htmlにリンク先のHTMLデータが格納されたので、ここからbeautifulosoupを使って必要な情報を抜き出していきます。
HTMLから情報を抜き出すために、HTMLparserを使います。

bsObj = BeautifulSoup(html, “html.parser”)

HTMLparserとは、PythonでHTMLを解釈するための基礎処理のようなものです。

“HTMLParser インスタンスは、HTML データが入力されると、開始タグ、終了タグ、およびその他の要素が見つかる度にハンドラーメソッドを呼び出します。各メソッドの挙動を実装するには HTMLParserサブクラスを使ってそれぞれを上書きして行います。”
参考:html.parser— HTML および XHTML のシンプルなパーサー¶(原文)

parserでHTMLを処理したら、最後にbeautifulsoupでリンク情報を抜き出します。

return bsObj.find(“ul”, {“id”: “sitemap_list”}).findAll(“a”)

findallメソッドで取得した要素は、配列形式で渡されるため、あとはfor文などで煮るなり焼くなりお好きにどうぞ。

まとめ

クラウドワークスの案件で、サイトのURL一覧を取得してほしいという案件を見つけたので作ってみました。
Pythonで行う基本的なスクレイピングは驚くほど簡単にできますね。

今はデータ分析の分野にも関心があるので、今後スクレイピングで取得したデータを用いて何か分析をできたらいいなと思っております。

参考

PythonとBeautiful Soupでスクレイピング
html.parser— HTML および XHTML のシンプルなパーサー¶(原文)