웹 크롤링이란?
웹 사이트를 방문하여 정보를 읽어오는 작업을 뜻함. 보통 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)
/
- 현재 위치의 자식 노드만 검색
//
- 현재 위치의 모든 자손 노드에서 검색
*
- 와이드 카드로 경로에 있는 모든 노드를 의미
'프로그래밍 > Python' 카테고리의 다른 글
Selenium. 특정 텍스트 포함 찾기 및 클릭 with xpath (0) | 2022.07.28 |
---|---|
Selenium 활용, 예제 기록 (0) | 2022.03.26 |
Python : 여러개의 DataFrame을 각 시트별로 엑셀 파일에 저장 (2) | 2020.10.08 |
Python으로 주식 데이터 불러오기 - pandas_datareader (0) | 2020.03.24 |
댓글