スクレイピングで俳句データを取得ーWebアプリ制作日記その3

AIアプリ制作
頼りにしてるよ、My MacBook Air!

今回は、
Webサイトから俳句データを「スクレイピング」して、
csv形式で保存する。

スクレイピングとは、
Web ページの情報を取得する技術のことで、
Pythonでは、

1.Requests/BeautifulSoup を利用する
2.Seleniumを利用する

この2つが代表的な方法だという。

初心者は、
Requests/BeautifulSoup がいいというが、
キカガク長期コースで、
Seleniumを教わったので、
こちらのライブラリを利用する。

ただ、
スクレイピング」は基本かつ有用な機能なので、
ぜひともマスターしたい(以前、こんなブログも書いた[2019年8月1日])。

先月(3月25日)には、
『Python2年生 スクレイピングのしくみ』
を購入。

1章だけやってみたがむちゃくちゃていねいで、いい!

Requests/BeautifulSoupなど、超初心者向けに説明されていて、
Webアプリ制作が終わったら、一から勉強したい。

さて、本題。
前回作った仮想環境(myvenv5)からジュピター・ノートブックを立ち上げ、

!pip install selenium

Seleniumをインストールし、

import selenium

Seleniumをインポート(*1)
さらに、

from selenium import webdriver

で、W3Cで標準化されたAPIをインストールし、
これでさまざまなブラウザを(といっても、Chromeだけど)自動操作する(*2)
そもそもSeleniumというのは、
ブラウザを自動操作するためのライブラリなのだ。

しくみは
『増補改訂版 Pythonクローリング&スクレイピング』によると

キカガクでもおすすめと言われた。実際、この本は必須!

この通り。

©️上記、本書より

キカガクのテキストでは、
Chrome を自動操作するため、
いったんターミナルに戻り、

control + c (2つのキーを同時に押す)

で、ジュピター・ノートブックを中断させ(*3)

brew install chromedriver

で、Chrome用のドライバーである
「ChromeDriver」
をインストールする。
(最初はここで必ずつまづく *4)

で、ジュピター・ノートブックに戻り
(もちろん、ターミナルで jupyter notebook を実行するだけ)、
ブラウザ(Chrome)を立ち上げる。

browser = webdriver.Chrome()

Chromeのブラウザが自動的に立ち上がるが、
ジュピター・ノートブックに戻り、
お目当のWebサイトにアクセスする。

url = ‘http://ohh.sisos.co.jp/cgi-bin/openhh/jsearch.cgi?group=hirarajp&dbi=20140103235455_20140104000746&se=0&sf=0&sk=‘
browser.get(url)

ここではURL(uniform resource locator)が長いので、
urlという変数に入れてコードを書いている。

先ほど自動的に立ち上がったChromeのブラウザに、
当該Webサイトが表示されるので、
ここで、
HTML(Hyper Text Markup Language:ハイパーテキスト・マークアップ・ランゲージ)を読み込んで、
CSS(Cascading Style Sheets、カスケーディング・スタイル・シート)も利用して、
どこを取得するか決める。

まだまだ先は長い(つづく)。

*1 インストールは1回だけだが、インポートは毎回行う。最初のうちはとまどう。
*2 W3Cについては、こちらAPIについては、こちら
*3 ここも必ずとまどう。そのままではなにも入力できない状態になっているからだ。
*4 Homebrewをインストールしていない場合まずは、こちら

これは、よく使う。ここからインストール!

それでも「No available formula with the name chromedriver
というエラーが出たので、

brew tap homebrew/cask
brew cask install chromedriver

を実行し、ようやく動いた。

Follow me!