본문 바로가기
python

python3와 selenium을 이용하여 javaScript 함수 호출하기

by 황인태(intaehwang) 2021. 12. 14.
반응형

안녕하세요 황인태입니다.

오늘은 python3와 selenium을 이용하여 javaScript 함수 호출하는 방법에 대해 알려드리겠습니다.


1. selenium에서 javaScript를 실행하는 이유

bs4(Beautiful Soup4)를 이용해 크롤링을 하다보면 url를 통해 DOM을 파싱하기 때문에 js로 동적으로 생성된 테이블이나 func 결과를 크롤링하기 어려운 문제가 발생합니다. 그렇기 때문에 webDriver을 이용하여 크롤링이 가능한 selenium을 이용하게 됩니다.

온비드라는 사이트를 예를들면

table tag에 데이터가 있고 table 하단에 페이지 목록이 있는 형태입니다. 다음 페이지로 이동하기 위해 온비드는 fn_paging()이라는 javaScript 함수를 호출하여 table을 갱신하고 있습니다.

따라서, 해당 url의 모든 데이터를 크롤링 하기 위해서는 fn_paging()을 호출하는 방법이 편리해 보입니다.


2. code

1
2
3
4
5
6
7
8
9
10
11
12
13
from selenium import webdriver
 
 
if __name__ == "__main__":
    url = ""
 
    driver = webdriver.Chrome("/chromedriver.exe")
    driver.implicitly_wait(3)
    driver.get(url)
 
    for i in range(110):
        print("Current page is {0}".format(i))
        driver.execute_script("fn_paging({0})".format(i))
cs

line 7 처럼 driver를 선언합니다.

implicitly_wait(3)는 최대 3초 까지 driver 작동을 기다리겠다는 설정입니다. (3초 이전에 완료 시 바로 작동)

line 9 처럼 get(url)를 하고나면 이제 load된 url의 javaScript 함수를 driver.execute_script()를 이용하여 사용할 수 있습니다.

반응형
Buy me a coffeeBuy me a coffee

댓글