반응형
파이썬, 셀레니움 HTML 파일 읽어서 분석하기
글. 수알치 오상문
다음과 같은 HTML 파일이 있다고 하자.
<!DOCTYPE html>
<html lang="ko-kr">
<head>
<style>
table, td {
border: 1px solid #444;
}
thead, tfoot {
background-color: #aaa;
color: #111;
}
</style>
</head>
<body>
<h1> 테이블 예제 </h1>
<table>
<thead>
<tr>
<th colspan="2">음식 주문 차림표</th>
</tr>
</thead>
<tbody>
<tr>
<td><h5>비 빔 밥 (1번줄 1번째 칸)</h5></td>
<td>9000원 (1번줄 2번째 칸)</td>
</tr>
<tr>
<td><h5>김치찌개 (2번줄 1번째 칸)</h5></td>
<td>8000원 (2번줄 2번째 칸)</td>
</tr>
<tr>
<td><h5>된장찌개 (3번줄 1번째 칸)</h5></td>
<td>7000원 (3번줄 2번째 칸)</td>
</tr>
</tbody>
<tfoot>
<tr>
<th colspan="2">물은 셀프입니다.</td>
</tr>
</tfoot>
</table>
</body>
</html>
브라우저에서 살펴보면 다음과 같은 화면 구조를 보여준다.
이제 이 HTML 파일을 읽어와서 셀레니움에서 다뤄보자.
예제에서 해당 파일 풀네임은 'D:/project_selenium/table.html'이다.
다음 파이썬 코드는 셀레니움을 이용해서 해당 테이블 내용을 보여준다.
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
import time
options = webdriver.ChromeOptions()
options.add_experimental_option('excludeSwitches', ['enable-logging']) # device error 메시지 off
driver = webdriver.Chrome(options=options) # 현재 위치에 있는 크롬드라이버 등록
driver.implicitly_wait(10) # 정상 페이지 로딩 최대 허용 시간
try:
# HTML 파일 로딩
driver.get("file:///D:/project_selenium/table.html")
try:
# 'tfoot' 태그가 보일 때까지 기다리기
WebDriverWait(driver, 20).until(
lambda driver: driver.find_element(By.TAG_NAME, 'tfoot'))
time.sleep(1)
except Exception as e:
print('get error:', e)
raise Exception('"tfoot" tag not found')
except Exception as e:
print('get error:', e)
driver.quit()
exit(1)
try:
# 테이블 내용 출력
for tr in driver.find_elements(By.TAG_NAME, 'tr'):
tr_text = []
for td in tr.find_elements(By.TAG_NAME, 'td'):
tr_text.append(td.text)
print(*tr_text)
except Exception as e:
print(e)
input('Quit? ')
driver.quit()
[실행 결과]
비 빔 밥 (1번줄 1번째 칸) 9000원 (1번줄 2번째 칸)
김치찌개 (2번줄 1번째 칸) 8000원 (2번줄 2번째 칸)
된장찌개 (3번줄 1번째 칸) 7000원 (3번줄 2번째 칸)
Quit?
반응형
'웹 크롤링, 스크래핑' 카테고리의 다른 글
파이썬, 셀레니움 캘린더 선택 예제 (0) | 2022.07.21 |
---|---|
파이썬, 셀레니움 요소 선택 에러 대응 참고 (0) | 2022.07.20 |
파이썬, 셀레니움 google.co.kr 웹 페이지 소스 코드를 HTML 파일로 저장 (0) | 2022.07.17 |
파이썬, 셀레니움 '텍스트'로 요소 찾기 (0) | 2022.07.17 |
파이썬, 셀레니움 스크롤 예제 (0) | 2022.07.17 |