ブラウザ操作でテーブル内の情報を読み取る方法【Python】

Pythonのブラウザ操作でテーブル内の情報を読み取る方法を紹介します。

実装方法

下記処理を行うことでテーブルの情報を読み取れます。

  • 指定したURLでブラウザを開く
  • テーブル要素を取得
  • 1列ずつ順番にtd要素をまとめて取得
  • td要素のテキストを取得

下記コードではテーブルをCSSセレクタで取得していますが、テーブルが複数ある場合などはIDやClassを指定することで特定のテーブルのみ取得可能です。

 import undetected_chromedriver as uc
 from selenium.webdriver.common.by import By
 from selenium.webdriver.support.ui import WebDriverWait
 from selenium.webdriver.support import expected_conditions as EC
 
 def read_table(url):
     # Chrome ドライバを起動
     driver = uc.Chrome()
 
     try:
         # 指定された URL を開く
         driver.get(url)
 
         # テーブルが表示されるまで待機
         WebDriverWait(driver, 10).until(
             EC.presence_of_element_located((By.CSS_SELECTOR, "table"))
         )
 
         # データを格納するリスト
         datalist= []
 
         while true:
             # テーブルを取得
             table = driver.find_element(By.CSS_SELECTOR, "table")
             rows = table.find_elements(By.CSS_SELECTOR, "tr")
 
             # 各行からデータを取得
             for row in rows[1:]:  # ヘッダー行をスキップ
                 cols = row.find_elements(By.CSS_SELECTOR, "td")
                 if len(cols) < 4:
                     continue  # 列数が足りない場合はスキップ
 
                 # 各列のデータを取得
                 data= {
                     "col0": cols[0].text,
                     "col1": cols[1].text,
                     "col2": cols[2].text,
                     "c0l3": cols[3].text,
                 }
                 datalist.append(data)

             if # 任意の条件でループを抜ける
                 break
 
         return datalist
 
     finally:
         # ブラウザを閉じる
         driver.quit()
Python
この記事を書いた人

エンジニアとして仕事をしています。
仕事や趣味を通して、開発やプログラミングについて学んだことを綴っていきます。
 ・実務経験は、WEBシステムのサーバーサイドコーディングがメイン
 ・アプリ開発は趣味程度

akihiro-takedaをフォローする
akihiro-takedaをフォローする
プログラミング・開発の備忘録
タイトルとURLをコピーしました