今回は、HTMLやXMLファイルからデータを取得するPythonのライブラリであるBeautiful Soupを用いた簡単なスクレイピングプログラムを学んだ。
公式ドキュメントによると、Beautiful Soupは、パーサー(構文解析器)を使って、パースツリー(構文木)の探索、検索、修正を行うことができるライブラリだそうだ。
今回のコード
今回のコードはこちら。
import bs4 import lxml from bs4 import BeautifulSoup as soup from urllib.request import urlopen def rss(rss_url): Data = urlopen(rss_url) rss_page = Data.read() Data.close() soup_page = soup(rss_page,"xml") rss = soup_page.findAll("entry") for r in rss: print(r.title.text) print(r.link.get('href')) print("\n") rss_url="https://www.nitorihd.co.jp/news/atom.xml" rss(rss_url)
解説
まず、必要なモジュールをインポートする。
import bs4 import lxml from bs4 import BeautifulSoup as soup from urllib.request import urlopen
bs4は、Beautiful Soupモジュールである。
このbs4からBeautiful Soupオブジェクトが得ることができる。
lxmlは、PythonでHTML、XMLを処理するための便利なライブラリの一つ。
今回利用するパーサー(構文解析器)である。
urlopenは、Pythonの標準ライブラリであるurllibのメソッドである。
urllib.requestを用いると、URLs (Uniform Resource Locators) を取得することができるようになる。
次に、rssのデータを読み込んで表示させるメソッドを書く。
def rss(rss_url): Data = urlopen(rss_url) rss_page = Data.read() Data.close() soup_page = soup(rss_page,"xml") rss = soup_page.findAll("entry") for r in rss: print(r.title.text) print(r.link.get('href')) print("\n")
引数となるrss_urlには、rssフィードのURLが入っている。
urlopenメソッドでページを読み込み、BeautifulSoupを用いて、xmlデータを抜き出している。
最後に抜き出したデータの中から、titleタグとlinkタグのhrefの値を抜きだして、表示させている。
仕組みとしてはとてもシンプルだった。
今回は初めてスクレイピングにチャレンジしてみた。
今後もう少し勉強して何か活用できるアイデアが生まれてくれば面白そうだ。
ちなみに今回スクレイピングしているrssはニトリのものである。
投資をしていると、上場企業で最長の31期連続増益中のニトリの情報は気になるので作ってみた。