seleniumWebdriverとpythonを使って、WEBスクレイピングをする連載第2回目です。前回は「SeleniumとPythonでスクレイピング(構築環境)」について解説しました。

今回は、pythonでGoogle検索をする簡単なコードを書きます。

pythonでSeleniumを動かす

言葉で長々と説明するよりも、まずはコードを見てみましょう。以下のコードはSeleniumとpythonで、実際にGoogle検索をしたコードです。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
import time

# chromeの起動オプション、ヘッドレスモードを指定
options = Options()
options.add_argument('--headless')
options.add_argument('--disable-gpu')

# chromeで起動
driver = webdriver.Chrome(chrome_options=options)

# GoogleのTOPページにアクセス
driver.get('https://www.google.co.jp/')

# 1秒間隔をあける
time.sleep(1)

# 検索フォームに「test」を入力
driver.find_element_by_name('q').send_keys('test')

# 検索フォーム上でエンターキーを押す
actions = ActionChains(driver)
actions.send_keys(Keys.ENTER).perform()
time.sleep(1)

# 検索結果のリンクテキストを取得
seach_res = [link.text for link in driver.find_elements_by_css_selector('div.r > a')]

# 結果を出力
print(seach_res)

コードの解説

コードにコメントを残していますが、もう少し説明します。Seleniumの動作の流れは、以下のとおりです。

1.GoogleのTOPページにアクセス
selenium-python1

2.検索フォームに「test」という文字列を入力
selenium-python2

3.検索フォーム上でエンターキーを押して、「test」の検索結果を表示
selenium-python3

4.検索結果のリンクテキストを取得し、端末上に表示
selenium-python4

これで終わりです。リンクテキストが配列として生成されているのが分かると思います。

補足

今回はリンクテキストを取得しましたが、URLだけを取得したい場合は、

seach_res = [link.text for link in driver.find_elements_by_css_selector('div.r > a')]

↑のコードを以下のように書き換えればいけます。

seach_res = [link.get_attribute('href') for link in driver.find_elements_by_css_selector('div.r > a')]

selenium-python5

以上です。