2017年1月5日木曜日

Raspberry Pi 3 Model B + CentOS7でスクレイピング環境を構築する

Raspberry Pi 3 Model BにCentOS7をインストールしたので、ここにPython3とBeautifulSoup4でスクレイピングできる環境を構築する。CentOS7にはデフォルトでPython2はインストールされているが、Python3はインストールされていない。まずはPython3をインストールする。


Python3インストール


yum-builddepをインストールするためにyum-utilsをインストール。


yum-builddepコマンドでPython3に依存関係のあるパッケージをインストール。


makeコマンドを使えるようにする(CentOS7インストール時点ではインストールされていない)。


Python3のソースファイルを適当なディレクトリにダウンロード。


Python3のインストール。


インストールの確認。


pipも同時にインストールされる。



BeautifulSoup4のインストール


続いてBeautifulSoup4をインストールする。



スクレイピング


以上でスクレイピングできる環境が作成できたので、試しにスクレイピングしてみる。Raspberry PiとPythonでスクレイピングをするのタイトルと記事内のspanタグのテキスト一覧を取得するコードは以下の通り。

# ライブラリの読み込み
from urllib.request import urlopen
from bs4 import BeautifulSoup

# スクレイピングするページのurl
target = "http://irukanobox.blogspot.jp/2016/06/raspberry-pipython.html"

# 指定したurlからデータを読み込む
html_data = urlopen(target).read()
# パーサーに「html.parser」を指定してデータを解析
html_parsed = BeautifulSoup(html_data, "html.parser")

# classに「entry-title」が指定されているh3タグのテキストを表示
print("*** h3タグのテキスト ***")
print(html_parsed.find("h3", class_="entry-title").text.strip())
print()

# findAllを使うと、条件に一致するものすべてをlist型で取得できる
# ブログ記事内のspanタグのテキスト一覧を表示
print("*** spanタグのテキスト ***")
for span in html_parsed.find("div", class_="entry-content").find("div").findAll("span"):
    print(span.text)


実行すると以下のようにタイトルと記事内のspanタグのテキスト一覧が取得できる。



0 件のコメント:

コメントを投稿