イクメンデータサイエンティストのブログ

子育て中のデータサイエンティストブログです。営業して売る人→スタートアップで分析する人→コンサルでがっつり分析する人

【Pythonでスクレイピング】画面遷移のやり方(ボタンクリック)

こんにちはbudouです!

今回はPythonを使ったスクレイピングに関して書いていきたいと思います。

f:id:budounomizu:20201017092718p:plain f:id:budounomizu:20201017092742p:plain

このページのボタンを押して次のページに遷移したいです。

これを自動でやらせたいと思います。

目次です。

はじめに

前回の記事にも合ったように、 「前回のスクレイピング記事引用」 スクレイピングに必要な要素は下記、

  1. 必要な情報があるwebページまでたどり着く。
  2. 必要な情報があるwebページまでたどり着いたら、そのページから必要な情報を取り込んでくる。

今回は1.必要な情報があるwebページまでたどり着く。
こちらの中でも
ページ遷移のためにクリックする必要があるようなページ。
これをします。

前回と同じく、

  • "遷移前のページ"の「どこになんのアクションすれば良いのか」を理解する。
  • 「どこにアクションすれば良いか」を知ったのちに必要なコーディング。 この手順で見ていきます。

必要な情報があるwebページまでたどり着くときに必要なアプローチ3つ

  1. フォームに何かを記入して、「検索」や「送信」ボタンを押して結果を検索するようなページ。
  2. ページ遷移のためにクリックする必要があるようなページ。 ← ここで説明するのはこれです。
  3. チェックボックスなどにチェックをして条件を絞り込み、絞り込んだ結果を「検索」や「送信」して結果を検索するようなページ。

では始めていきます。

"遷移前のページ"の「どこになんのアクションをすれば良いのか」を理解する。

今回「ページ遷移のためにクリックする必要があるようなページ」ということで、 サンプルとしてsuumoのサイトで試したいと思います。

まず、画面の適当なところで右クリックして「検証」を開きます。(F12キー押下でも良いです)

f:id:budounomizu:20201017093512p:plain 画面の目的地がハイライトされているところを目指してhtmlをどんどん開いていき、 こんな感じで最終地点が見えるまで辿りましょう。

このなかにある

<a class="ui-btn ui-btn--search btn--large js-searchBtn" href="javascript:void(0)">

が目的地となります。

「どこにアクションすれば良いか」を知ったのちに必要なコーディング。

目的地がはっきりしましたので、コーディングしていきましょう。

seleniumでブラウザを動かします。

ライブラリと、ドライバー立ち上げ。

from selenium import webdriver
driver = webdriver.Chrome(executable_path='chromedriver.exe')

始めに、目的地となる地点の上にあるid属性を探すようにしましょう。 (若しくは他にもポイントなると地点を探すことが出来ればそれでももちろん良い)

driver = webdriver.Chrome()
driver.get('https://suumo.jp/chukoikkodate/kanagawa/city/')

serch_path = '//span[@id="js-shiborikomiPanel"]'
driver.find_element_by_xpath(serch_path)

こんな感じで目的にに一番近いid属性を指定してみてちゃんと見つけられていれば... そこからスタートしましょう!

因みに、上手くパスが見つからなかったりするとこんなエラーが出るはず。 f:id:budounomizu:20201017093724p:plain

エラーが出なければ、そこから下までつないでいきましょう。 目的地まで辿れたら、実行時に.click()をします。 ↓はxpathで書いております。(私は分かりやすいのでxpathが好きです。)

serch_path = '//span[@id="js-shiborikomiPanel"]/div[@class="searchbox"]/a[@class="ui-btn ui-btn--search btn--large js-searchBtn"]'
driver.find_element_by_xpath(serch_path).click()

おわりに

「必要な情報があるwebページまでたどり着く」 ために必要な要素

  1. フォームに何かを記入して、「検索」や「送信」ボタンを押して結果を検索するようなページ。

www.budounomizu.work

  1. ページ遷移のためにクリックする必要があるようなページ。
  2. チェックボックスなどにチェックをして条件を絞り込み、絞り込んだ結果を「検索」や「送信」して結果を検索するようなページ。

この2番に関してコードともに紹介させて頂きました。

3番も次の記事で書いていこうと思ってます。

以上、よろしくお願いします。