行いたいこと
今回はHTMLでのXpath指定をPythonで指定するメモを残したいと思います。
例えばHTMLで「//h1[@class=”_3cl937Zpn1ce8mDKd5kp7u”]」
と指定した場合にPythonでは「driver.find_element(By.XPATH,’//h1[@class=”_3cl937Zpn1ce8mDKd5kp7u”]’)」
とするような内容です。
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
import time from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.common.by import By # Chromeを指定 driver = webdriver.Chrome(ChromeDriverManager().install()) # ブラウザのサイズを指定して起動 driver.set_window_size(1500,1000) # Yahooのサイト url = 'https://www.yahoo.co.jp/' # SeleniumでURLを起動する driver.get(url) time.sleep(2) # /*------------------------------------------ # HTMLでのXpathとPythonでの指定方法 # --------------------------------------------*/ # HTMLでのXpath(h1タグ AND クラス) # //h1[@class="_3cl937Zpn1ce8mDKd5kp7u"] # Pythonでの取得 > クリック(ニュースの一番目) driver.find_element(By.XPATH,'//h1[@class="_3cl937Zpn1ce8mDKd5kp7u"]').click() time.sleep(2) # Yahooトップへ遷移 driver.get(url) time.sleep(2) # HTMLでのXpath(text) # //*[text()="トヨタの実験都市 11月に建設開始"] # Pythonでの取得 > クリック(ニュースの一番目) driver.find_element(By.XPATH,'//*[text()="トヨタの実験都市 11月に建設開始').click() time.sleep(2) # Yahooトップへ遷移 driver.get(url) time.sleep(2) # HTMLでのXpath(svg) #//*[name()='svg'] # Pythonでの取得 > クリック(svg) driver.find_element(By.XPATH,"//*[name()='svg']").click() time.sleep(2) # Yahooトップへ遷移 driver.get(url) time.sleep(2) # CLASS属性のみで検索する場合 # そのまま使用するとNG # driver.find_element(By.CSS_SELECTOR, "fQMqQTGJTbIMxjQwZA2zk _1alzSpTqJzvSVUWqpx82d4").click() # 頭は.始まり 空白は削除し.で接続 driver.find_element(By.CSS_SELECTOR, ".fQMqQTGJTbIMxjQwZA2zk._1alzSpTqJzvSVUWqpx82d4").click() |
解説
コメントアウトでも記載していますが、下記の要素をPythonで指定しています。
・HTMLでのXpath(h1タグ AND クラス)
・HTMLでのXpath(text)
・HTMLでのXpath(svg)
・CLASS属性のみで検索する場合
スクレイピングを行う際に良く使用する指定方法を纏めてみました。
特に「By.CSS_SELECTOR」はClass名をそのままコピペしてしまい、
よくエラーを起こしてしまうので気を付けたいと思います。
今回は以上となります。
最後までお読みいただきありがとうございました!