【python】seleniumを使って自動検索&検索結果を自動取得【スクレイピング】

「seleniumの使い方がわからない」「検索を自動化したい」

こんな方に向けて今回の記事を書いています。

seleniumはpythonの自動検索モジュールで(詳しくは後述します)特定のワードの検索を自動で処理してくれます。

今回は、このseleniumを用いて、Googleで自動検索をする方法を解説いたします。

自分の環境で動作することを確認できているので、ぜひ一度試していただきたいと思います。

seleniumとは

seleniumはPythonなど複数の言語から自動操作できるブラウザーの実行環境です。

ChromeやFirefoxなどのブラウザーをPythonから起動し、ページ内のJavaScriptを読み取ってフォームに文字を入力し、送信ボタンを押下し、さらに先のページで処理を実行するなどができます。

この間のCookieやセッション情報も維持されますので、例えば会員サービスのログイン後のページも

簡単にスクレイピングができるようになります。

準備するモジュール

今回のseleniumを使うには以下をインストールする必要があります。

  1. Chrome
  2. Chromeと同じversionの、ChromeDriver
  3. selenium

Chromeのversionの確認方法

Chromeを開き、右上の3つの点をクリックします。

その中の、ヘルプ、GoogleChormeについてをクリックします。

その中に、インストールされているGoogleChromeのversionが見れるはずです。

ChromeDriverのインストール&seleniumのインストール

上記ページで自分が使っているChromeと同じversionのものをインストールしましょう。

また、コマンドプロンプト上でseleniumをインストールしておきましょう。

pip3 install selenium

全体の処理の流れ

コードに入る前に、全体の処理の流れを把握しておきましょう。

以下の流れでコードを紹介いたします。

全体の処理の流れ

①webDriverでURLにアクセスする

②入力欄に検索ワードを入れる

③検索結果を取得する

④ブラウザーを閉じる

①webDriverでURLにアクセスする

url = "https://www.google.com"

driver = webdriver.Chrome()
driver.get(url)
time.sleep(3)

検索するURL先を宣言します。

それをもとに、Webdriverを使ってChromeを起動し、URLを開きます。

トップページを開いたら、正常にブラウザデータが読み込まれるよう数秒待つようにします。

②入力欄に検索ワードを入れる

search = driver.find_element(By.NAME,"q")
search.send_keys(keyword)
search.submit()

.find_elementでGoogleの検索フォームを取得します。

検索フォームは、name="q"となっているので、引数には(By.NAME,"q")を指定します。

また、name値以外にも、id属性はBy.id。name属性は、By.nameで指定します。

他のページのformを指定するときは、参考にしてみてください(参考サイト

.submitでフォームが提出されます。

③検索結果を取得する

soup = BeautifulSoup(driver.page_source,"html.parser")
results = soup.find_all("h3",attrs={"class":"LC20lb"})

for i, result in enumerate(results):
    print("%d: %s" % (i + 1, result.get_text()))

サーバーから返ってきた検索結果を取得します。

今回は、BeautifulSoupを用います。属性を指定するだけで、簡単に要素を取得できるモジュールです。

.find_allで「div」や「h3」を指定します。

今回は、「h3」タグで「class = LC20lb」を指定します。

その取得結果をfor文で表示します。

④ブラウザーを閉じる

time.sleep(5)
driver.quit()

ブラウザーを閉じるのは、.quitで行います。

全コード

#googleで検索し、キーワードの上位検索結果を取得する
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
from bs4 import BeautifulSoup

url = "https://www.google.com"
keyword="WBC"

driver = webdriver.Chrome()
driver.get(url)
time.sleep(3)

search = driver.find_element(By.NAME,"q")
search.send_keys(keyword)
search.submit()

soup = BeautifulSoup(driver.page_source,"html.parser")
results = soup.find_all("h3",attrs={"class":"LC20lb"})

for i, result in enumerate(results):
    print("%d: %s" % (i + 1, result.get_text()))

time.sleep(5)
driver.quit()

まとめ

今回は、google検索を自動で行うseleniumを使ったコードを解説いたしました。

実際に実行してみると、タブが自動で動いて操作されるので、ハッカー気分を味わえます。

ぜひ一度実行して試してみてください。

(Visited 36 times, 1 visits today)