Selenium에서 가로로 셀 결합된 테이블 로드
개요
Selenium에서 다음과 같이 셀 결합된 테이블을 좋은 느낌으로 읽고 싶다.
이번에는 가로로 조인된 테이블을 대상으로 하며 데이터 보완도 왼쪽 방향으로 보완하여 읽고 싶은 경우를 상정하고 있습니다.
입력
table.html
<table id="tbl">
<tr>
<td> a </td>
<td> b </td>
<td> c </td>
</tr>
<tr>
<td colspan=2> 1 </td>
<td> 2 </td>
</tr>
<tr>
<td> 4 </td>
<td colspan=2> 5 </td>
</tr>
</table>
얻고 싶은 출력
구현
pandas
의 read_html
를 사용합니다.※ 참고로 한 기사 : h tps : // s t c ゔ ぇ rf ぉ w. 코 m / 쿠에 s 치온 s / 60823159 / ぱ r シン g ー s te dt d an d d Niu mpy
#seleniumでサンプルのhtmlファイルを読み込む
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome(executable_path = '<<<CHROMEDRIVER>>>')
driver.get(r'C:\Users\<<<USERNAME>>>\Desktop\table.html')
#seleniumのfind_elementでテーブル要素を探してHTMLテキスト化して
table_id = driver.find_element(By.ID, 'tbl')
tabletext = table_id.get_attribute('outerHTML')
#pandasのread_htmlでDataFrameに変換する
import pandas as pd
df = pd.read_html(tabletext)
df = df[0]
df
# 0 1 2
#0 a b c
#1 1 1 2
#2 4 5 5
실패 예
지금까지 셀의 데이터를 각 셀마다 스캔해 버리고 있어 잘 되지 않았습니다. (원래 이것도 너무 많지만…)
어쨌든 colspan의 정보를 가져 오지 않으면 안되는 것일까 라든지, 괴로웠습니다만, 앞에서 설명한 기사 봐 눈으로부터 비늘 엉망이었습니다.
table_id = driver.find_element(By.ID, 'tbl')
rows = table_id.find_elements(By.TAG_NAME, "tr")
r_data = []
for i, row in enumerate(rows):
cols = row.find_elements(By.TAG_NAME, "td")
c_data = []
for j, col in enumerate(cols):
c_data.append(col.text)
r_data.append(c_data)
r_data
#[['a', 'b', 'c'], ['1', '2'], ['4', '5']]
요약
pandas는 굉장합니다.
※행 방향으로 셀 결합된 것이라든지는 검증하고 있지 않습니다.
Reference
이 문제에 관하여(Selenium에서 가로로 셀 결합된 테이블 로드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/pm00/items/9db27ba6d4ac7efd774a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)