Python - Selenium (소스 및 요소 접근)

컴퓨터/Python

728x90
반응형

서론

지난 포스트에 이어서 selenium을 통해서 특정 웹페이지에 접근하고 필요한 HTML 소스 및 요소들을 접근하는 방법에 대해서 알아보도록 합시다.

 

페이지 소스 보기 - page_source

selenium을 통해서 get요청을 한 후 웹 브라우저 드라이버에서 생성된 소스 값을 얻어올 수 있습니다.

browser = webdriver.Chrome()
browser.get('https://www.tistory.com')

print(browser.page_source)

사실, 이 방법만 알고 Beautifulsoup을 같이 사용한다면 요소에 쉽게 접근하는 것이 가능합니다.

하지만, selenium에서 자체적으로 소스의 요소에 접근할 수 있기 때문에 본문에서는 그 방법을 알아보도록 하겠습니다.

 

요소에 접근하기 find_element / find_elements

 

2가지의 방법으로 요소에 접근할 수 있습니다. 

  • find_element - 조건에 적합한 가장 첫 번째 요소
  • find_elements - 조건에 적합한 모든 요소

해당 메서드들은 호출 형태는 다음과 같습니다.

browser.find_element(self,by값,value)
browser.find_elements(self,by값,value)

여기서 by값에 다양한 어떤 조건이 들어올지 명시해 줄수 있습니다.

  • By.ID - 태그의 ID 값
  • By.NAME - 태그의 name값
  • By.XPATH - 태그의 경로
  • By.TAG_NAME - 태그명
  • By.CLASS_NAME - 태그의 class 값
  • By.CSS_SELECTOR - CSS 선택자

또한 이 By값을 적용하기 위해서는 상단에 By값을 사용하기 위해 모듈에서 import 해주어야 합니다.

from selenium.webdriver.common.by import By

 

이제 해당 메서드들을 사용해보면서 포스트를 마치겠습니다.

  • Tag명으로 찾기
#Tag명으로 요소 추출
itemlsit = browser.find_elements(By.TAG_NAME,'a')

for item in itemlsit:
    print(item.text)
  • Class 명으로 찾기
#클래스 명으로 추출
itemlist = browser.find_element(By.CLASS_NAME,'inp_text')
print(itemlist.get_attribute('innerHTML'))

 

요소의 자식요소 또는 요소의 전체 값 얻기

Beautifulsoup처럼 연속해서 자식 요소를 검색하며 찾아갈 수 있고, 전체 HTML의 값을 취하는 것 또한 가능합니다.

#요소의 자식요소 접근하기 및 전체 HTML 값 얻기

itemlist = browser.find_element(By.TAG_NAME,'body')
print(itemlist.get_attribute('innerHTML'))

item = itemlist.find_element(By.ID,'daumFoot')
print(item.get_attribute('innerHTML'))
print(item.text)
728x90
반응형

Commnet

G91개발일지

Gon91(지구일)

91년생 공학엔지니어의 개발일지

TODAY :

YESTER DAY :

TOTAL :