イクメンデータアナリストのブログ

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

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

こんにちはbudouです!

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

今回やりたいのは... f:id:budounomizu:20201025025829p:plain ページのチェックボックスにチェックを入れてから次のページに遷移したいです。

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

はじめに

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

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

今回は1.必要な情報があるwebページまでたどり着く。
こちらの中でも
チェックボックスなどにチェックをして条件を絞り込み、絞り込んだ結果を「検索」や「送信」して結果を検索するようなページ。
の遷移のやり方を実践します。

前回と同じく、

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

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

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

では始めていきます。

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

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

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

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

このなかにある

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

が第一の目的地となります。 今回やりたいのは、ここに✓を入れた後に、検索ボタンを押すことです。

f:id:budounomizu:20201025030051p:plain このなかにある

<a href="javascript:void(0);" class="ui-btn ui-btn--small ui-btn--full ui-btn--search js-btCondSearch">この条件で検索する</a>

が第二の目的地になります。 ここをクリックします。

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

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

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

ライブラリインポート

import time
from selenium import webdriver

第一の目的地から一番近いid属性のポイントからxpathで辿ります。

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

search_path_1 = '//tr[@id="js-sa01-panel"]/td[@class="searchtable-box"]/div[@class="searchitem"]/\
    ul[@class="searchitem-list"]/li[1]/input[@type="checkbox"]'
driver.find_element_by_xpath(search_path_1).click()

これでチェックが入ってますね!

ここから第二の目的地に行きます。

search_path_2 = "//div[@id='js-searchpanel']/div[@class='searchpanel-inner']/div[@class='searchpanel-box']/\
    a[@class='ui-btn ui-btn--serachpanel searchpanel-box-btn js-searchBtn']"
driver.find_element_by_xpath(search_path_2).click()

これでページが遷移出来ているかと思います。

おわりに

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

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

www.budounomizu.work

2.ページ遷移のためにクリックする必要があるようなページ。

www.budounomizu.work

3.チェックボックスなどにチェックをして条件を絞り込み、絞り込んだ結果を「検索」や「送信」して結果を検索するようなページ。

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

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