トップページを開いて検索してみる
前回はWebドライバーの準備から、
実際にWebサイト(メルカリ)を開くまでを行いました。
表示された内容を「ソート」するまでを行ってみたいと思います。
前回トップページだけ開いたコードを関数で呼べるようにします。
全体としては一旦以下のような形です。
解説はコードの下で。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
from selenium import webdriver from time import sleep from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import Select # /*------------------------------------------ # ドライバーの準備 # --------------------------------------------*/ def get_driver(): # chromeドライバーまでのパスを格納する driver = webdriver.Chrome("chromedriver_win32/chromedriver.exe") driver.maximize_window() # 固定の秒数ではなく、指定した要素が見つかるまでの待ち時間を設定 driver.implicitly_wait(5) return driver # /*------------------------------------------ # メルカリのURLを取得する # --------------------------------------------*/ def get_top_page(driver): # メルカリのトップページを表示する driver.get("https://jp.mercari.com/") driver.implicitly_wait(5) # 検索フォームxpathを格納する search_bar = driver.find_element_by_xpath('//*[@id="gatsby-focus-wrapper"]/div/div/header/mer-navigation-top/mer-autocomplete/div[1]/mer-search-input') driver.implicitly_wait(5) # 検索ボックスにキーワードを格納する search_key = "python 本" search_bar.send_keys(search_key) driver.implicitly_wait(5) # キーワードを入力したらエンターキーで検索を行う search_bar.send_keys(Keys.ENTER) # 新しい順番に並び替える new_sort = driver.find_element_by_xpath("//*[@id='search-result']/div/div/section[1]/div/div[2]/div/label/mer-select/div/div[1]/select[1]") select_new_sort = Select(new_sort) select_new_sort.select_by_visible_text("新しい順") # html情報と検索したキーワードを返す return search_key # /*------------------------------------------ # main処理 # --------------------------------------------*/ if __name__ == "__main__": # ブラウザのdriver取得 driver = get_driver() # ページのソース取得 search_key = get_top_page(driver) |
# 検索フォームxpathを格納する
chromeの検証コマンドを使用しています。
chromeでメルカリのトップページを開いて右クリック > 検証をクリック
検証ツールが表示されたらxpathをコピーします。
コピーした内容を変数に格納する。という流れです。
これで検索フォームの位置を特定することができました。
続いて検索フォームに検索したいキーワードを入力します。
# 検索ボックスにキーワードを格納する
変数「search_key」にメルカリで検索したい内容を格納します。
今回は「python 本」という内容で検索を行ってみます。
search_keyに検索キーワードを格納したら、
次にxpathを格納した変数を使用して検索キーワードを
入力します。
「send_keys」を使用することで実現可能です。
検索ボックスへ文字が格納できたら、最後に
「send_keys」で次はEnterキーを送信する処理を入れて、検索を開始します。
これで、メルカリのトップページを開いてキーワード検索まで自動化
することが出来ました。
検索したページ情報はデフォルトで「おすすめ順」でソートされている
状態なので、今回「新しい順」にソートする処理を組み込んでいます。
# 新しい順番に並び替える
まずは先ほどと同じく、「おすすめ順」にカーソルを当て
・右クリック > 検証をクリックします
表示されたら同様にxpathをコピーしてください。
ソートを行うにはいくつか方法がありますが、今回はSelectを使用します。
「from selenium.webdriver.support.ui import Select」
を冒頭でインストールしている内容ですね。
・select_new_sort = Select(new_sort)
・select_new_sort.select_by_visible_text(“新しい順”)
の処理で「新しい順」をセレクトしています。
ここまでに行えたこと
・自動でWebブラウザが起動し、メルカリのトップページが開く
・検索ボックスに検索したいワードを入力して検索を行う
・検索した結果に対して「新しい順」でソートを行う
少し長くなってしまったので、次の完結編で必ず終わらせます。
次回は
・表示された内容に対してタイトルや価格を取得する
・何件まで取得するかを確定する
・取得した内容をCSVに保存する
といったことを行いたいと思います。
第3回の記事を公開しました。
最後までお読み頂き、ありがとうございました。