今回は、
Webサイトから俳句データを「スクレイピング」して、
csv形式で保存する。
スクレイピングとは、
Web ページの情報を取得する技術のことで、
Pythonでは、
2.Seleniumを利用する
この2つが代表的な方法だという。
初心者は、
Requests/BeautifulSoup がいいというが、
キカガク長期コースで、
Seleniumを教わったので、
こちらのライブラリを利用する。
ただ、
「スクレイピング」は基本かつ有用な機能なので、
ぜひともマスターしたい(以前、こんなブログも書いた[2019年8月1日])。
先月(3月25日)には、
『Python2年生 スクレイピングのしくみ』
を購入。
Requests/BeautifulSoupなど、超初心者向けに説明されていて、
Webアプリ制作が終わったら、一から勉強したい。
さて、本題。
前回作った仮想環境(myvenv5)からジュピター・ノートブックを立ち上げ、
でSeleniumをインストールし、
でSeleniumをインポート(*1)、
さらに、
で、W3Cで標準化されたAPIをインストールし、
これでさまざまなブラウザを(といっても、Chromeだけど)自動操作する(*2)。
そもそもSeleniumというのは、
ブラウザを自動操作するためのライブラリなのだ。
しくみは
『増補改訂版 Pythonクローリング&スクレイピング』によると
この通り。
キカガクのテキストでは、
Chrome を自動操作するため、
いったんターミナルに戻り、
control + c (2つのキーを同時に押す)
で、ジュピター・ノートブックを中断させ(*3)、
で、Chrome用のドライバーである
「ChromeDriver」
をインストールする。
(最初はここで必ずつまづく *4)
で、ジュピター・ノートブックに戻り
(もちろん、ターミナルで jupyter notebook を実行するだけ)、
ブラウザ(Chrome)を立ち上げる。
Chromeのブラウザが自動的に立ち上がるが、
ジュピター・ノートブックに戻り、
お目当のWebサイトにアクセスする。
browser.get(url)
ここではURL(uniform resource locator)が長いので、
urlという変数に入れてコードを書いている。
先ほど自動的に立ち上がったChromeのブラウザに、
当該Webサイトが表示されるので、
ここで、
HTML(Hyper Text Markup Language:ハイパーテキスト・マークアップ・ランゲージ)を読み込んで、
CSS(Cascading Style Sheets、カスケーディング・スタイル・シート)も利用して、
どこを取得するか決める。
まだまだ先は長い(つづく)。
それでも「No available formula with the name chromedriver」
というエラーが出たので、
brew cask install chromedriver
を実行し、ようやく動いた。