LoginSignup
1
2

More than 1 year has passed since last update.

Python+Seleniumを用いたGoogle検索結果のCSV保存方法 メモ

Posted at
  • PythonとSeleniumを用いて、Google検索した結果(タイトルとURL)をCSVに保存する方法についてメモする。

事前準備

  • Docker環境で動かすため、こちらの構成でdocker-compose.ymlやDockerfileなどdocker-seleniumを動かすための設定を準備する。

テストコードtest.py

  • 入力したキーワードをGoogle検索した結果(タイトルとURL)をCSVに保存する。
  • 処理の流れ
    1. 検索キーワードの入力を受け付ける。
    2. Googleにアクセスし、入力キーワードで検索する。
    3. 検索結果からタイトルとURLを抽出する。
    4. 抽出結果を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

参考情報

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2