【Python】IE11でGoogle検索をして、検索結果をCSV出力する

  • 投稿 : 2020-09-26
  • 更新 : 2022-03-03

環境構築

追記:2020/09/12Python(64bit版)でも確認しました。この辺りは、Python(32bit版)と変わりなさそうです。Selenium Selenium W

某氏の猫空

「Python」「Selenium」「WebDriver」を導入してください

動画での説明

■ 環境構築
1.Seleniumの導入 (0:11)
2.webdriverの導入 (0:31)
3.IE11の設定 その1/その2 (0:53)
4.動作確認 (1:21)

■ プログラミング
5.Google検索 (1:55)
6.検索結果の読取 (2:24)
7.ファイル出力 (2:45)
8.動作確認 (3:05)

■ 補足
9.IE操作時のコマンドプロンプトを非表示 (3:36)
10.レジストリ (4:09)

サンプルプログラム

・テキストボックスに入力
・HTMLから要素を読み出す
・配列に代入
・CSVファイルに出力

があるので、この組み合わせだけでも、結構いろいろできるかと思います。

import time
import csv
from selenium import webdriver

arr =list() 

#----------------
#webdriver読込
#----------------

driver=webdriver.Ie("C:\\etc\\webdriver\\IEDriverServer_Win32_3.9.0\\IEDriverServer.exe")

#----------------
# Googe検索
#----------------
driver.get('https://www.google.com/')
search = driver.find_element_by_name('q')
search.send_keys('IE VBA')             
search.submit()
time.sleep(10)

#----------------
# 検索結果の読取
#----------------
for i, g in enumerate(driver.find_elements_by_class_name("g")):
    #------
    #HTML要素の取得
    #------
    r = g.find_element_by_class_name("r")
    title = r.find_element_by_tag_name("h3").text
    u = r.find_element_by_tag_name("a").get_attribute("href")
    s = g.find_element_by_class_name("s")
    sum = s.find_element_by_class_name("st").text

    #------
    # 画面表示
    #------
    print("------ " + str(i+1) + " ------")
    print(title)
    print("\t" + u)
    print("\t" + sum)  

    #------
    #配列に代入
    #-----
    line = [title,u]
    arr.append(line)

#----------------
# 検索結果をファイル出力
#----------------
with open('data.csv', 'w') as file:
  writer = csv.writer(file, lineterminator='\n')
  writer.writerows(arr)

#----------------
# 終了
#----------------
print('終了するには何かキーを押してください…')
input()

driver.quit()

追記:2022/03/03
Selenium 3系で動作するソースです。Selenium 4で動作させるためには、ソースの修正が必要です。

補足

クラスなど

DOM の編集  |  Chrome DevTools  |  Google Developers

タグ、クラス名などは、Chromeのデベロッパーツールで確認できます。

クラス名などの要素から、情報を取得する

Selenium API(逆引き)
https://www.seleniumqref.com/api/webdriver_gyaku.html

・要素を取得する
・要素から情報を取得する

あたりを参考に!!

スポンサーリンク