今朝はスクレイピングを復習して、このブログのURLの一覧を取得しました。
使ったのは、Pythonとbeautiflsoupです。
ゴールはこちら。
今日の朝活の成果!
スクレイピング復習して、自分のブログ記事のURLを一括取得しました!#朝活
#プログラミング
#Python #スクレイピング
pic.twitter.com/BTTngUDbzX— カシワバユキ@朝活エンジニア (@yuki_kashiwaba) 2019年1月11日
スクレイピングに関する過去記事の復習です。
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 のシンプルなパーサー¶(原文)