ウェブ検索と結果の取得を自動化する【Python & selenium】

Python

Python でウェブ検索を行い、検索結果を自動取得するサンプルコードです。

環境: Windows 10, Microsoft Edge (ブラウザのバージョンに対応するドライバーをダウンロード済み), Anaconda, Python 3.X, selenium を設定済み

状況

Python に selenium などの自動化ツールをインストールしたら、ウェブサイトの自動操作をやってみたくなると思います。
ウェブサイトを使う典型例としては、ウェブ検索があります。ネットで探すと、検索を実行するまでの事例は見つかります。ところが、ウェブ検索後の結果取得まで記載したサイトや書籍があまり見つからず、検索結果が取得できないと実用になりません。そこで、ウェブ検索から結果取得まで行うサンプルを作成しましたので、ポイントをまとめておきます。

注意点

以下は、キーワードを指定するとウェブにアクセスして、検索結果のタイトルと詳細の記載を取得するサンプルコードの一例です。
Google 検索は誰でも知っており、スクリプトの説明のため、例示しています。実際に使用する場合は、アクセス先のサイトの規定でウェブスクレイピングに制限がある場合がありますので、規定をよく確認してください。また、サーバーに負荷をかける可能性がありますので、sleep で記載している時間を十分に長く取って使用するようにしてください。

使い方

① PC で使用しているブラウザと、そのバージョンを確認し、ブラウザを作成している企業のホームページから、自動操作のためのドライバをダウンロードし、フォルダに入れておきます。([1] の部分)
下記の例では、path0 の場所に Microsoft のホームページからダウンロードした Microsoft Edge 用ドライバを入れています。ブラウザのバージョンと、ドライバのバージョンが対応している必要があります。違っていると動かないと思います。
② つぎに、デスクトップ等にフォルダを作って、webscraping.py 等の名前でテキストファイルを作り、下記のスクリプトをコピー&ペーストして保存してください。
①のドライバの保存先に応じて、path0 の記載を修正してください。
③ 準備ができたら、コマンドプロンプト等で python (パス+)webscripng.py として、実行してみてください。
指定したキーワードで Google 検索をして、タイトルと記載された事項をそれぞれ取得できると思います。
④ ②の内容を修正して使用してみてください。
例えば、[2] のキーワードを変えてください。
また、サイトのどの部分を取得するかにより、xpath を確認・取得して、書き換えれば、好きな場所をダウンロードできると思います。(xpath の取得方法はここでは割愛します。)

まとめ

Python で自動でウェブサイトにアクセスし結果を取得するスクリプト例についてまとめました。
コピー&ペーストで動いたら、内容を書き換えて応用してください。

なお、検索サイトでよく使う便利な検索式を以下にまとめています。サンプルコードがうまく動いたら、検索式の部分を下記リンクの検索式と組み合わせてみてください。かなり高度なウェブスクレイピングができると思います。

関連リンク
・ 【Google】 使える! 検索方法まとめ
・ Webスクレイピングが動かなくなったとき 【Microsoft Edge & selenium】
・ 動画のダウンロード方法に関するまとめ
・ 指定した URL からリンクを抽出する 【Python】
・ 指定したサイトマップからリンクを取得する 【Python】

サンプルコード

# -*- coding: utf-8 -*-
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

def get_items1( driver1, xpath1, len1 ): 
    elem1 = driver1.find_elements_by_xpath( xpath1 ) 
    str1 = "" 
    for i1 in range( len( elem1 ) ): 
        str2 = elem1[i1].text.strip() 
        if len( str2 ) > len1: 
            str1 = str1 + str2 + "\n" 
    sleep( 5 ) 
    return str1 

path0 = "C:/user/edgedriver_win64/msedgedriver.exe"  # [1] Windows Edge driver 
driver = webdriver.Edge( path0 ) 

str1 = "python"                                      # [2] search word 

driver.get('https://www.google.com/')                # [3] web site 
search_box = driver.find_element_by_name( "q" ) 
search_box.clear() 
search_box.send_keys( str1 + Keys.ENTER ) 
sleep( 2 ) 

xpath1 = '//a/h3/span'                               # [4] xpath 
str1 = get_items1( driver, xpath1, 5 ) 
print( str1 ) 
print( "" ) 

xpath1 = '//div/div/div/span/span'                   # [5] xpath
str1 = get_items1( driver, xpath1, 25 ) 
print( str1 ) 

driver.quit()
タイトルとURLをコピーしました