Raspberry Piでスクレイピングを試したので、実際にスクレイピングするまでRaspberry Piで行ったことをまとめる。スクレイピングの処理はPython3でコーディングした。
1.Raspberry PiのPython環境の確認
まずはRaspberry PiにインストールされているPythonを確認する。Pythonには2系と3系があり、Raspberry Piにははじめから両系ともインストールされている。とりあえずバージョンを確認。
Python2系のバージョン確認
Python3系のバージョン確認
2.pipのインストール
pipはPythonのパッケージ管理システム。スクレイピングするためにはHTMLなどを解析する必要があるが、それを行ってくれるライブラリであるBeautifulsoup4をインストールする。ただ、Raspberry PiではPython2系がデフォルトになっているので、apt-getでインストールするとPython2系にインストールされてしまうらしい。今回はPython3系を使いたいので、pipでBeautifulsoup4をインストールする。 pipにも2系と3系がある。 pip3系のインストールは以下のコマンド。
ちなみにpip3系のコマンドはpip3ではない。実行ファイルを確認するとpip-3.2。
3.Beautifulsoup4のインストール
ここでようやくHTML解析ライブラリであるBeautifulsoup4のインストール。
4.Pythonでのコーディング
このブログ記事をスクレイピングしてみる。Beautifulsoup4の使い方は、Beautofulsoup4のドキュメントのページにサンプルコードがある。idやclassで収集対象を絞れるし、正規表現も使える。
ブログタイトルを取得する場合、HTMLは以下のようになっているので、classが「entry-title」のh3タグを指定すればタイトルが取得できそう。
タイトルの他に、ブログ投稿内の1番目のspanタグのテキストも取得するコードは以下の通り。
結果は以下の通り。
1.Raspberry PiのPython環境の確認
まずはRaspberry PiにインストールされているPythonを確認する。Pythonには2系と3系があり、Raspberry Piにははじめから両系ともインストールされている。とりあえずバージョンを確認。
Python2系のバージョン確認
Python3系のバージョン確認
2.pipのインストール
pipはPythonのパッケージ管理システム。スクレイピングするためにはHTMLなどを解析する必要があるが、それを行ってくれるライブラリであるBeautifulsoup4をインストールする。ただ、Raspberry PiではPython2系がデフォルトになっているので、apt-getでインストールするとPython2系にインストールされてしまうらしい。今回はPython3系を使いたいので、pipでBeautifulsoup4をインストールする。 pipにも2系と3系がある。 pip3系のインストールは以下のコマンド。
ちなみにpip3系のコマンドはpip3ではない。実行ファイルを確認するとpip-3.2。
3.Beautifulsoup4のインストール
ここでようやくHTML解析ライブラリであるBeautifulsoup4のインストール。
4.Pythonでのコーディング
このブログ記事をスクレイピングしてみる。Beautifulsoup4の使い方は、Beautofulsoup4のドキュメントのページにサンプルコードがある。idやclassで収集対象を絞れるし、正規表現も使える。
ブログタイトルを取得する場合、HTMLは以下のようになっているので、classが「entry-title」のh3タグを指定すればタイトルが取得できそう。
Raspberry Pi+nginx環境にPHP5をインストールする
タイトルの他に、ブログ投稿内の1番目のspanタグのテキストも取得するコードは以下の通り。
# ライブラリの読み込み from urllib.request import urlopen from bs4 import BeautifulSoup # スクレイピングするページのurl reviewUrl = 'http://irukanobox.blogspot.jp/2016/05/raspberry-pinginxphp5.html' # 指定したurlからデータを読み込む htmlData = urlopen( reviewUrl ).read() # パーサーに「html.parser」を指定してデータを解析 htmlParsed = BeautifulSoup( htmlData, 'html.parser' ) # classに「entry-title」が指定されているh3タグのテキストを表示 print( htmlParsed.find( 'h3', class_='entry-title' ).text ) # findAllを使うと、条件に一致するものすべてをlist型で取得できる # ブログ記事内の1番目のspanタグのテキストを表示 print( htmlParsed.find( 'div', class_='entry-content' ).find( 'div' ).findAll( 'span' )[0].text )
結果は以下の通り。
0 件のコメント:
コメントを投稿