KOSEN{BLOG}について

PythonとSeleniumでスクレイピング

はじめに

ある日、ふと、自動購入Botって自分でも作れるのか疑問に思いつくろうとあがいてみました。

調べていくとPythonが簡単っぽかったので挑戦しました。

自動でブラウザを操作する為のライブラリであるSelenium を使いブラウザを操作したので、まとめておこうと思います。

環境

  • Python3
  • selenium
  • Windows10
  • Google Chrome

セットアップ

Pythonの環境構築

こちらの記事で行いました。Python環境構築-VScode-win10

Seleniumのインストール

コマンドプロンプトを開き、pipでseleniumをインストールします。

pip install selenium

ブラウザに合わせたドライバーを用意する

ブラウザを操作するには、各ブラウザに合わせてドライバーを用意する必要があります。
chromeならchromeの、FirefoxならFirefox専用のドライバーが必要になります。

今回は Chrome を使用するので 公式サイトから Chromedriver をダウンロードします。

CAUTION
ドライバーだけでは動かないので
chrome(ブラウザ)が入ってない方はブラウザも入れておいてください。
また、ドライバーとブラウザのバージョンが違うと動作しないので気をつけてください


下図はドライバーの公式サイトで、赤で囲んだところがバージョンです。


下図はブラウザのバージョンです。
確認方法は、ブラウザのツールバーにあるメニュー をクリックし
「ヘルプ」 から「Google Chromeについて」を選択するとできます。


次に、ダウンロードしたzipファイルを解凍します。

適当な場所にzipの中にあるexeファイルを置く。
(C:\Program Files\chromedriver 的な感じで)

「環境変数を編集」(Winキーを押して「環境変数を編集」と検索すれば出てきます)
を実行し、「Path」に上記のフォルダを追加します。

最後にコマンドプロンプトで以下のコマンドを実行して、起動できればOKです。

C:\Users\username>chromedriver
Starting ChromeDriver 80.0.3987.106 (f68069574609230cf9b635cd784cfb1bf81bb53a-refs/branch-heads/3987@{#882}) on port 9515
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.

使ってみる

適当なフォルダを作り適当な名前.pyのファイルを作ります。 C:\Users\username\Desktop\python\practice.py 的な感じで作りました。

WEBページを開く

・ブラウザを開く
 先ほどPathは通したので()の中は空白で大丈夫です。

webdriver.Chrome(driver_path) 

・webページを開く

driver.get('URL') 

・webページを閉じる

driver.close() 

・ブラウザを終了 (全てのウィンドウを閉じる)

driver.quit() 

例としてGoogleのトップページを開いて閉じるだけのコードを下に書きました。

from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.google.co.jp')
driver.quit()

HTMLの要素にアクセス

id、class、xpath 等HTMLの要素にアクセスするために要素を指定して取得する必要があります。
取得することで後述するクリックなどの操作を行います。 参考資料

HTMLの要素についてはこちらの記事で説明しています。

・id

driver.find_element_by_id('ID')

・class

driver.find_element_by_class_name('CLASS_NAME')

・name

driver.find_element_by_name('NAME')

・xpath

driver.find_elements_by_xpath(".//a")

クリックなどのアクション

webページを操作するためのアクションです。

・ボタンをクリックする

driver.find_element_by_id('Btn').click()

・Form に文字を入力する

driver.find_element_by_name('From').send_keys("text")

・スクリーンショットをとる

driver.save_screenshot('filename.png')
CAUTION
他にもたくさんありますがここでは割愛します。
自動購入Botで使用したものは次の記事で紹介します。



例としてGoogleのトップページに行き、
「selenium」というキーワードで検索して、その後ブラウザを閉じるコードを下に書きます。

検索画面のHTMLの要素がわからないとアクション出来ません。
要素はchromeのデベロッパーツールで確認できます。
入力フォームのHTMLは下記のようになってます。今回はname属性でアクションさせました。

以下がコードです。

 

from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.google.co.jp')
driver.find_element_by_name("q").send_keys('selenium')
driver.find_element_by_name("q").submit()
driver.save_screenshot('Google.png')
driver.quit()

 

スクリーンショットがちゃんと撮れてました!

さいごに

WEBページの自動操作ができるようになりました。
基本動作をもとに自動購入Botを作ってみたいと思います。


次の記事で書きます。

一応試作ではなく完成まで作ったので記事を以下に載せてます。
(完成系のコードもあります。)

自動購入Bot完成まで

コメントを残す

メールアドレスが公開されることはありません。