pythonのSeleniumはスクレイピングできるやつ

スクレイピングという文字列に憧れを持っているメンズです。
将来はスクレイピングをする人 = スクレイピング人 = すくれいぴんちゅ と呼ばれたくてウズウズしてます。
調べてみたらSeleniumというモジュールが出てきました。
気になったので調べてみたというブログです。
シュタインズゲートに似たような言葉が出てきたような気がしてウズウズしてますが、気のせいでしょうか?

Selenium

pythonスクレイピングをするために必要
クリックする操作等を自動化する
利用するためには専用のブラウザが必要
今回はhomebrewから'ChromeDriver'をインストール

$ brwe install chromedriver

と思ったら以下のとおりERROR

 Error: No available formula with the name "chromedriver" 
It was migrated from homebrew/core to homebrew/cask.
You can access it again by running:
  brew tap homebrew/cask
And then you can install it by running:
  brew cask install chromedriver

caskに移動したからよろしくって感じ?

caskとは?

参考
パッケージ管理のhomebrewは開発環境をシェルでコマンドを打ち込むことで導入&管理が可能
homebrew-caskはdropboxchrome等.dmgファイルもシェル内でコマンドを入力することでインストールができるようになるツール 当該記事
下記を実行することで導入できる

# 導入
$ brew install brew-cask
# chromedriverの導入
$ brew cask install chromedriver

でもあまりツールは増やしたくないので普通にブラウザからインストールすることにした
...と思って調べてたら他のブラウザについても出てきた
最初に参考にしたサイトでChromeを使ってたのでわかりませんでしたが、ちゃんと各ブラウザごとにあるんですねすごい。 私はFirefoxユーザなのでfirefox版webdriverを以下からDL

github
DLたgeckodriverはPATHが通っているフォルダに移動させて実行権限を付与するらしいので下記にコピー(理由はよくわかってない💩)

/usr/local/bin/

ここで疑問

/usr/local/binってどこ?

参考teratail,参考ブログ

  • usr/bin/ 元々OS等に標準で入っているcdやls等ツールの格納先
  • usr/local/bin 自分で後から追加して組み込んだツール等の格納先
    usr/local/binにアクセスしてみるとpyenv-virtualenvとか自分で入れたツールが入ってる
    ターミナルでのアクセス方法がわからなかったので、shift+command+Gでfinderの検索窓を開き、usr/local/binと入力。ダウンロードしたgeckodriverドラッグアンドドロップした。

なんかよくわからんが権限のあるところに置けばgeckodriverが使えるってことかな?

seleniumをインストール

$ pip install selenium
Collecting selenium
  Downloading https://files.pythonhosted.org/packages/57/bc/17164fd471ccdf0df3a992c710c0c3c47743462ff41ab72a02c6ede96e90/selenium-3.12.0-py2.py3-none-any.whl (946kB)
    100% |████████████████████████████████| 952kB 246kB/s 
Installing collected packages: selenium
Successfully installed selenium-3.12.0
You are using pip version 9.0.1, however version 10.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

seleniumを試してみる!

from selenium import webdriver

webdriverのChrome又はfirefoxインスタンスを作成することで各ブラウザの操作ができる

driver = webdriver.Chrome() #Chrome
driver1 = webdriver.firefox() #firefox

(ググったら「引数に何も指定しない場合、各ブラウザのwebdriverがPATHの通ったディレクトリに配置されていないと実行に失敗するので注意。」と書いてあった。よく意味がわかってない💩)

ブラウザの開閉

  • ブラウザを開く
webdriver.Firefox()
  • ページを開く
driver.get('URL')
  • WEBページを閉じる
driver.close()
  • ブラウザを閉じる
driver.quit()

要素にアクセス

HTMLの要素を指定して値を取得することが可能 * idの取得

driver.find_element_by_id('ID')
  • classで取得
driver.find_element_by_class_name('CLASS_NAME')
  • nameで取得
driver.find_element_by_name('NAME')
  • link textで取得
driver.find_elements_by_link_text('LINK_TEXT')
  • ネストされた要素はpathを指定して取得
driver.find_elements_by_xpath(".//a")

アクション

取得した要素に対して、アクションを起こしてwebページを操作する

  • ボタンをクリック
driver.find_element_by_id('btn').click()
  • フォームに文字入力
driver.find_element_by_name('From').send_keys('text')

コンソール上でのWEBの操作にはHTMLの知識が必要そうだった。 ウェブスクレイピングして自動で情報をかき集めてみたいので、HTMLも勉強してみよう

seleniumの活用方法1.qiita
seleniumの活用方法2.qiita