- PythonとSeleniumを用いて、Google検索した結果(タイトルとURL)をCSVに保存する方法についてメモする。
事前準備
- Docker環境で動かすため、こちらの構成でdocker-compose.ymlやDockerfileなどdocker-seleniumを動かすための設定を準備する。
テストコードtest.py
- 入力したキーワードをGoogle検索した結果(タイトルとURL)をCSVに保存する。
- 処理の流れ
- 検索キーワードの入力を受け付ける。
- Googleにアクセスし、入力キーワードで検索する。
- 検索結果からタイトルとURLを抽出する。
- 抽出結果をCSVファイルに出力する。
import os
import csv
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.expected_conditions import presence_of_element_located
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
if __name__ == '__main__':
filename = './google_search_result.csv'
titles = []
urls = []
# Selenium Gridサーバーへ接続する。
driver = webdriver.Remote(
command_executor=os.environ["SELENIUM_URL"],
desired_capabilities=DesiredCapabilities.CHROME.copy()
)
# 1. 検索キーワード入力
keyword = input("Search Keyword:")
# 2. Googleにアクセス+入力キーワードで検索
driver.get("https://google.com")
driver.find_element(By.NAME, "q").send_keys(keyword + Keys.RETURN)
# 検索結果描画待機
wait = WebDriverWait(driver, 10)
wait.until(
presence_of_element_located((By.XPATH, '//a/h3')))
# 3. タイトルとURLを抽出
for elem_h3 in driver.find_elements_by_xpath('//a/h3'):
title = elem_h3.text
url = elem_h3.find_element_by_xpath('..').get_attribute('href')
print("Title:"+title+" | "+"URL:"+url)
titles.append(title)
urls.append(url)
# 4. csv出力
result = [list(row) for row in zip(titles, urls)]
with open(filename, mode="w", encoding="utf-8") as f:
writer = csv.writer(f, lineterminator="\n")
writer.writerows(result)
driver.quit()
動作確認
- ビルド→起動→コンテナの中に入る。
docker-compose build --no-cache
docker-compose up -d
docker-compose exec app bash
- コード実行(
selenium
で検索)
cd test
python test.py
Search Keyword:selenium
Title:Seleniumブラウザー自動化プロジェクト :: Selenium ... | URL:https://www.selenium.dev/documentation/ja/
Title:10分で理解する Selenium - Qiita | URL:https://qiita.com/Chanmoro/items/9a3c86bb465c1cce738a
Title:Selenium (ソフトウェア) - Wikipedia | URL:https://ja.wikipedia.org/wiki/Selenium_(%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2)
Title:入門、Selenium | 第1回 Seleniumの仕組み | CodeGrid | URL:https://www.codegrid.net/articles/2014-selenium-1/
Title:Webの操作を自動化してくれる「Selenium」を使ってみた ... | URL:https://www.leon-tec.co.jp/blog/yoshida/8453/
Title:Selenium with Python — Selenium Python Bindings 2 ... | URL:https://selenium-python.readthedocs.io/
Title:Selenium実践入門 ―― 自動化による継続的なブラウザテスト ... | URL:https://www.amazon.co.jp/Selenium%E5%AE%9F%E8%B7%B5%E5%85%A5%E9%96%80-%E8%87%AA%E5%8B%95%E5%8C%96%E3%81%AB%E3%82%88%E3%82%8B%E7%B6%99%E7%B6%9A%E7%9A%84%E3%81%AA%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%83%86%E3%82%B9%E3%83%88-WEB-PRESS-plus/dp/4774178942
Title:Amazon.co.jp: Selenium - アマゾン | URL:https://www.amazon.co.jp/Selenium/s?k=Selenium
Title:Selenium入門 Pythonでブラウザを自動化したい方必読! | AI ... | URL:https://aiacademy.jp/media/?p=346
Title:Java/SeleniumのテストコードをAWS CodeBuildで実行する ... | URL:https://www.tdi.co.jp/miso/java-selenium-aws-codebuild
- CSV出力結果確認
cat google_search_result.csv
Seleniumブラウザー自動化プロジェクト :: Selenium ...,https://www.selenium.dev/documentation/ja/
10分で理解する Selenium - Qiita,https://qiita.com/Chanmoro/items/9a3c86bb465c1cce738a
Selenium (ソフトウェア) - Wikipedia,https://ja.wikipedia.org/wiki/Selenium_(%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2)
入門、Selenium | 第1回 Seleniumの仕組み | CodeGrid,https://www.codegrid.net/articles/2014-selenium-1/
Webの操作を自動化してくれる「Selenium」を使ってみた ...,https://www.leon-tec.co.jp/blog/yoshida/8453/
Selenium with Python — Selenium Python Bindings 2 ...,https://selenium-python.readthedocs.io/
Selenium実践入門 ―― 自動化による継続的なブラウザテスト ...,https://www.amazon.co.jp/Selenium%E5%AE%9F%E8%B7%B5%E5%85%A5%E9%96%80-%E8%87%AA%E5%8B%95%E5%8C%96%E3%81%AB%E3%82%88%E3%82%8B%E7%B6%99%E7%B6%9A%E7%9A%84%E3%81%AA%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%83%86%E3%82%B9%E3%83%88-WEB-PRESS-plus/dp/4774178942
Amazon.co.jp: Selenium - アマゾン,https://www.amazon.co.jp/Selenium/s?k=Selenium
Selenium入門 Pythonでブラウザを自動化したい方必読! | AI ...,https://aiacademy.jp/media/?p=346
Java/SeleniumのテストコードをAWS CodeBuildで実行する ...,https://www.tdi.co.jp/miso/java-selenium-aws-codebuild