본문 바로가기
프로그래밍/Python

Selenium 기본기 및 참고 코드

by 멀티코린 2022. 3. 26.

웹 크롤링이란?

웹 사이트를 방문하여 정보를 읽어오는 작업을 뜻함. 보통 HTML 내의 정보를 가져오게 된다.
(html, css에 대한 선행 이해 필요)

 

Selenium 동작 

#보통 시작하기 위해서

from selenium import webdriver
with driver.Firefox() as driver:
	driver.get('url')
    
## 이후 부터는 찾을 요소, 로직 작성해서 결과 도출 코드 작성.

 

  • 요소가 단수인가?복수인가? element vs elements
  • 요소를 선택할 방법은?

 


요소 선택 방법

tag, class, id, xpath 중에 본인이 판단하여 가장 좋은 방법으로 코드를 작성하면 됨.

#tag로 찾을 시
drvier.find_element_by_tag_name()

#class로 찾을 시
driver.find_element_by_class_name()

#id로 찾을 시
##id에 들어가는 값은 암묵적으로 html 작성 시 보통 특정해주는 값으로 사용됨. 
driver.find_element_by_id()

#xpath로 찾을 시
driver.find_element_by_xpath()

 

 

Tag로 요소 찾기

e = driver.find_element_by_tag_name('p')
	print(e.text)
# p태그만 찾아서 거기서 text만 반환한다.
# 단수형이므로 여러개가 있다면 맨 위에 적힌 요소만.



여러 개를 찾아내고 싶다면?

e_list = driver.find_elements_by_tag_name('p')
	for e in e_list:
    	print(e.text)
# p태그인 모든 것을 가져와서 
# e_list에 담긴 결과들에서 문자열만 뽑아서 반환을 반복한다.

 

class로 요소 찾기

tag만으로는 조건을 특정하기 어려울 수 있어 좀 더 조건을 특정할 수 있는 class를 사용.
태그에 속성을 지정해준 요소로 찾는다고 생각하면 됨.

e_list = driver.find_elements_by_class_name('bold')
	for e in e_list:
    	print(e.text)
# bold로 class가 지정된 모든 것을 가져와서 
# e_list에 담긴 결과들에서 문자열만 뽑아서 반환을 반복한다.

 

id로 요소 찾기

보통 id는 특정하는데 사용됨. 

e_list = driver.find_elements_by_id('titles')
	for e in e_list:
    	print(e.text)
# id가 titles인 모든 것을 가져와서 
# e_list에 담긴 결과들에서 문자열만 뽑아서 반환을 반복한다.

 

XPath로 요소 찾기

요소가 위치한 주소라고 생각하면 쉽고
* 웹페이지 요소 우클릭> 검사 > 해당 html에서 우클릭 > copy > copy xpath

e_list =driver.find_element_by_xpath('/html/body/div/div[2]/div[1]/div[1]/div/a[4]')
print(e_list.text)

/
 - 현재 위치의 자식 노드만 검색
//
 - 현재 위치의 모든 자손 노드에서 검색
*
 - 와이드 카드로 경로에 있는 모든 노드를 의미

 


2022.03.26 - [프로그래밍/Python] - Selenium 활용, 예제 기록

댓글