質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

解決済

1回答

1246閲覧

SeleniumでExcelからWEB検索について

fideo

総合スコア55

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

1クリップ

投稿2021/12/24 09:08

編集2021/12/26 03:27

Pythonでseleniumを使ってExcelのリストから
GOOGLE上でTELを取得したいです。
GOOGLEで店舗名を検索すると右側に表示される電話:〇〇〇〇を取得したいです。

現在EXCEL

AB
吉野家 四ッ谷駅前店
松屋 青物横丁店
サイゼリヤ 五反田西口店

実現したい結果 EXCEL

AB
吉野家 四ッ谷駅前店03-5363-2205
松屋 青物横丁店03-5796-2131
サイゼリヤ 五反田西口店03-5759-6522

下記の方法でTEL取得できましたが、毎回店舗によってTELのXPATHが変わるので、
どのように取得すれば良いでしょうか。

例①
吉野家 四ッ谷駅前店のxpath

//*[@id="kp-wp-tab-overview"]/div[1]/div/div/div/div/div[10]/div/div/div/span[2]/span/a/span

例②
サイゼリヤ 五反田西口店のxpath

//*[@id="kp-wp-tab-overview"]/div[1]/div/div/div/div/div[12]/div/div/div/span[2]/span/a/span

div[12],div[11]などxpath変化する場合、どのようにXPATH指定しますか。

code

# Excel用ライブラリ読込 import openpyxl import time from selenium.webdriver.common.keys import Keys # Excelファイルを開く v_wb=openpyxl.load_workbook("TEL.xlsx") # アクティブなシートを変数へ v_ws = v_wb.active # 2行目から、最大行+1まで繰り返す---------------------------------------------------------- for i in range(2,v_ws.max_row+1): # A列(店舗)を変数へ v_Excelfrom = v_ws['a'+str(i)].value # ブラウザ用ライブラリ読込 from selenium import webdriver # Chrome用ドライバー読込 v_browser = webdriver.Chrome("C:\Program Files\chromedriver_win32\chromedriver.exe") # GOOGLEサイトを開く v_browser.get('http://www.google.com') # 検索バーを入力 v_sfrom = v_browser.find_element_by_xpath('/html/body/div[1]/div[3]/form/div[1]/div[1]/div[1]/div[2]/div[2]/input') # Excelの店舗を入力 v_sfrom.send_keys(v_Excelfrom) #検索 time.sleep(2) v_sfrom.send_keys(Keys.ENTER) # 電話番号を取得 v_fare = v_browser.find_element_by_xpath('//*[@id="kp-wp-tab-overview"]/div[1]/div/div/div/div/div/div/div/div/span[2]/span/a/span') print(v_fare) # ExcelへTEL書き込み v_ws['b'+str(i)].value = int(v_fare) # ブラウザを閉じる v_browser.close() # ここまでを繰り返し -------------------------------------------------------------------- # Excelファイルを保存 v_wb.save("TEL.xlsx")

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

tryを追加したました。
もし、電話番号が見つからない場合、
エラーしますので、例外させて何もしないようにしました。

修正部分

try: #電話番号を取得 v_fare = v_browser.find_element_by_xpath('//*[@id="kp-wp-tab-overview"]/div[1]/div/div/div/div/div/div/div/div/span[2]/span/a/span') print(v_fare) #ExcelへTEL書き込み v_ws['b'+str(i)].value = int(v_fare) #Excelファイルを保存 v_wb.save("TEL.xlsx") #ブラウザを閉じる v_browser.close() except: print("何もしない") # ここまでを繰り返し --------------------------------------------------------------------

投稿2021/12/28 07:51

編集2021/12/28 07:52
fideo

総合スコア55

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問