アメグラ2号のブログ

1980年代後半の古き良きビデオゲームのほか、オッサンの個人的備忘録

python Webサイトを開く

f:id:game-allergy:20210331143049p:plain

pythonでWebスクレイピングをやっておこう。
以前VBAWSHWebブラウザを動かしたことはあったので、その復習も兼ねて。

 

スクレイピングは便利。

以前、パチンコの新着情報を毎度確認するのが面倒でVBAで組んだことがある。情報収集するサイトのHTMLをいったん調べないといけないが、一度調べて作ってしまえばもう自分でやる必要はなくなる。しかも大抵のサイトは規則性をもって商品が並べられているので、1つのページを把握できれば、やり方はほかのページにも適用できる。

単純作業は自動化しましょって、まぁその第一歩かなぁスクレイピングは。

 

で、今回はpythonで。

書籍の方法は、pythonモジュールのselenium、Chromedriver.exeを使用する。

 

要は、selenium内にあるwebdriverというモジュールを使用してChromedriver.exeを操作するイメージ。そのため、実行スクリプトの関数などは、webdriverのクラスを見れば良いってこと。(実行するだけならまぁ別にみる必要はないけど。)

 

seleniumの確認

使用しているpython内のモジュールの確認。

cmdで、>py -m pip list

下記情報が出てくるはず。


Package Version
---------- -------
et-xmlfile 1.0.1
jdcal 1.4.1
openpyxl 3.0.6
pip 21.0.1
selenium 3.141.0
setuptools 49.2.1
urllib3 1.26.3

 

上記でseleniumが無かった場合はインスコ

>py -m pip install selenium

 


Chrome webdriver

chromedriver.chromium.org

上から辿ると下記へ。

https://chromedriver.storage.googleapis.com/index.html?path=89.0.4389.23/

DLファイル名=chromedriver_win32.zip

 

※注意

あらかじめChromeの設定/Chromeについて、で、バージョンの番号を確認しておく。

自分の場合はこれ→バージョン: 89.0.4389.114(Official Build) (64 ビット)

で、インストールするchromedriverは、「89」から始まるものを選ぶ。

これが合わないと動かない?っぽい。

 

◆ファイルの配置

面倒なので同じフォルダ内に配置してる。

・実行スクリプトpython

・chromedrive.exe

 

◆実行スクリプト

スクリプトはこっちに置いておく。

game-allergy.hatenablog.com

 

◆実行方法

念のため。

Windows上の実行ファイルアイコン上で右クリックして、

→「開く」でスクリプト実行。

→「Edit with IDLE」でコードの編集(python入れたときに同梱されてるヤツ)

※この方法が安定してるかなぁ。 

 

◆実行結果

こんな感じで検索結果のお天気情報が表示される。

降水確率タブを押して表示を切り替えてくれるってのがいいよね。

f:id:game-allergy:20210401223154p:plain

 

 

f:id:game-allergy:20210401223210p:plain

降水確率タブは、id="wob_rain"とあるので、それをひっかける。

 

◆HTML読むのは面倒だな~

自分でHTML要素を確認するのはけっこう手間がかかる。

しかし書籍では、そんな時は、seleniumIDEを使うと良いって?

なんだそりゃ?

 

◆SeleniumIDE

ウェブブラウザの操作を記録してくれる。

ExcelVBAにある「マクロの記録」のようなもので、コードを書く際にすごーっく役に立つ。あれなんだっけ?なんて時はこれで一回自分でブラウザ操作をしながら記録して、あとでコードにしてみると面白い。

 

SeleniumIDE

SeleniumIDE

SeleniumIDE

SeleniumIDE

↑ ご丁寧にスクリプトへ書き出しもやってくれる。これはかなり助かる。

SeleniumIDEは、Chromeウェブストアで入手できる。無料。

 

スクリプトの勉強にはうってつけ。

ただ、こればっかり多様してスクリプト本来の意味を考えないのはなんだかな~になってしまう。ちなみに書籍のスクリプトはこのSelniumIDEを引用したみいただったけど、動かない箇所があったので自力で修正。

書籍やインターネットの情報は鵜呑みにするのではなく、自分なりにかみ砕いてうまく活用したい。