ど素人スクレイピング④

どうもおはこんばんにちは。マタキチです。
最近はだいぶ涼しいですね。この後徐々に寒くなっていくんだろうなと思っていたら、寒気と鼻水が我先にと到来した今日この頃。

pythonでWebスクレイピングの勉強をしているのでまとめたいと思います。忘備録的な意味合いが強いので悪しからず。またご指摘とうございましたら幸いです。

なんてったってSelenium

JavaScriptを多用しているサイトなどはWebブラウザーを利用しています。このWebブラウザーを遠隔操作するツールの中で有名なものといえばSeleniumというツールです。こちら主にWebアプリのテストの自動化なんかに使用されるようですが、スクレイピングの用途にも使用できます。自動的にURLを開き、クリック、スクロール、文字入力、画像キャプチャー、HTMLの任意の部分を取り出すなどが可能です。さらに詳しくは多くの方が記事を書かれているので調べてみてください。

Seleniumのインストール

まずは環境を整えましょう。SeleniumとBeautifulSoupのインストールです。

#Seleniumのダウンロードページ
$pip3 install selenium
#BeautifulSoupのダウンロードページ
$pip3 install BeautifulSoup

Firefoxを使用する場合はFirefoxのダウンロードを下記サイトからするか、コマンドから実行します。
【Firefixダウンロードページ】
https://www.mozilla.org/ja/firefox/new/?utm_medium=referral&utm_source=support.mozilla.org

chromeの場合も同様です。
【googlechromeのダウンロードページ】
https://www.google.co.jp/chrome/?brand=CHBD&gclid=Cj0KCQjw8svsBRDqARIsAHKVyqFwznC1kif5M5ytdN7QY3x7a2UDvVRMYlgWdpo4vJ95ybY6zu1ArIsaArL8EALw_wcB&gclsrc=aw.ds

ドライバーをインストール

Firefoxを使用したい場合はFirefox配布サイトからドライバー(Geckodriver)をダウンロードして、パスの通ったディレクトリーにコピーします。
【Geckodriverのダウンロード】
https://github.com/mozilla/geckodriver/releases/tag/v0.19.0
この時、末尾のバージョンに気をつける。

#パスの通ったディレクトリーの作成
$mkdir -p ~/src && cd ~/src
#ドライバーのインストール
$wget https://github.com/mozilla/geckodriver/releases/download/v0.21.0/geckodriver-v0.21.0-linux64.tar.gz
#.tar.gzで圧縮されているので展開します
$tar -zxvf geckodriver-v0.21.0-linux64.tar.gz
$sudo mv geckodriver /usr/local/bin/

最後に言語環境を整えます。これは好き好きな気がするので必要なかたはしてみてください。こちらのサイト参考にさせていただきました。

【Firefoxの日本語化:サイクリングと仕事さんより】
https://www.shinbo.org/archives/3980

また、OSがmacOSの場合は次のコマンドで実行可能です。

$brew install geckodriver
#pathが通っているか確かめる
$which geckodriver
>/usr/local/bin/geckodriver

これでFirefoxの遠隔操作の環境構築は完了。実はこちらFirefoxでのみ遠隔操作が可能です。googlechromeで使用したい場合は、chromedriverのインストールとpathの設定をする必要があります。やり方は同じで、インストールするものを変えるだけで大丈夫だと思います。せっかくなので今回はgooglechromeを使用してみます。ちなみにchromedriverを使用する場合のコマンドはこちら。

$brew install chromedriver
$which chromedriver
>/usr/local/bin/chromedriver

完了!

動作確認をしてみよう

環境構築が終わったら正しく動作するか試してみましょう。今回は下記のコードを書いてみました。こちら、googlechromeを開く、5秒待機、chromedriverを検索窓に書き込む、検索、5秒待機、chromeを閉じるとい動作を表しています。

import time
from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://www.google.com/')
time.sleep(5)
search_box = driver.find_element_by_name("q")
search_box.send_keys('chromedriver')
search_box.submit()
time.sleep(5)
driver.quit()

こちらをターミナル、cmdで起動すると、無事起動しました。・・・画像では残せませんでしたので仕方ない。

まとめ

seleniumを使用するとWebサイトの遠隔操作が可能。seleniumをインストールするだけではダメ、ドライバーも必要。ドライバーには種類があるので適切なものをインストールして、pathの通った場所にファイルをコピー。macの場合はbrewを使うと設定してくれるのでpathを通す必要なし。


いいなと思ったら応援しよう!