Data Science/python

[python] selenium 웹크롤러 정리

jay3108 2022. 1. 2. 01:20

환경준비

파이썬(3.5, 3.6), selenium, BeautifulSoup

from bs4 import BeautifulSoup    # html 데이터를 전처리
from selenium import webdriver   # 웹 브라우저 자동화
from selenium.webdriver.common.keys import Keys

import chromedriver_autoinstaller
import time  # 서버 통신 시 시간 지연

0. 크롬창 띄우기

driver = webdriver.Chrome("chormedriver.exe")  # 크롬 드라이버 로드(윈도우 기준, mac은 절대경로)

dirver.get(url)                                             # url 입력

 

※ 크롬 드라이버 autoinstaller 이용 

chrome_path = chromedriver_autoinstaller.install()

driver =webdriver.Chrome(chrome_path)

 

1. element 찾기 주요 함수

# 엘리먼트(element) : 홈페이지를 이루고 있는 다양한 요소들을 부르는 말.

# 엘리먼트 찾기 : 오른쪽 화면의 상단의 네모칸 화살표 있는 버튼을 누릅니다

 

● 기본은 id, name, class 로 찾는다.

element = driver.find_element_by_id(‘id’)

element = driver.find_element_by_name(‘name’)

element = driver.find_element_by_css_selector(‘#tsf .gLFyf.gsfi’)

 

● 링크된 text로 찾을 때

element = driver.find_element_by_link_text('text')

 

● id, name, class없을 때 xpath 이용한다.

element = driver.find_element_by_xpath("""//*[@id="snb"]/div/ul/li[1]/a""").click( )      # 정렬 버튼의 xpath 클릭

 

● 기타

element = driver.find_element_by_class_name(‘some_class_name’)

element = driver.find_element_by_tag_name(‘h1’)

 

2. 브라우저 컨트롤 주요 함수

● driver 컨트롤하는 명령어들

driver.back()                                                      # 뒤로 가기

driver.foward()                                                   # 앞으로 가기

driver.switch_to.window(driver.window_handles[-1])     # 최근 열린 탭으로 전환

driver.close()                                                      # 현재 탭 닫기                            

driver.switch_to.window(driver.window_handles[0])      # 맨 처음 탭으로 변경(0번 탭)

alert = driver.switch_to.alert                                   # alert창-“확인” 누르기

alert.accept()                                                      #

time.sleep(1)                                                       # 시간 텀 두기

 

● 버튼 클릭

button = driver.find_element_by_css_selector(ele)

AC(driver).move_to_element(button).click().perform()          # 버튼 클릭

driver.find_element_by_id("_search_option_btn").click( )        # 서치 옵션 버튼 클릭

 

● 인풋 받기

input('사용자에게 받을 내용 : ')                            # 인풋 받아서 변수로 사용 가능

 

● 시간

time.sleep(2)                                                  # 2초 기다려라

 

● 텍스트 제거 및 입력

# 한글자씩 입력창에 입력

s_date = driver.find_element_by_xpath("""//*[@id="blog_input_period_begin"]""")      # 날짜 입력할 부분 선택

s_date.clear( )                                       # 날짜 입력 부분에 기존에 입력되어 있던 날짜를 제거

start_date = “2019-04-05”

for c in start_date:      

    s_date.send_keys(c) 

    time.sleep(0.3)     

 

https://fenderist.tistory.com/168

 

[python] Selenium으로 스크래핑하기

[python] Selenium으로 스크래핑하기 ​ 1. Selenium으로 DOM요소 선택 - 요소를 찾지 못하면 NoSuchElementException 발생 이름 설명 처음요소를 추출 find_element_by_id(id) id속성으로 요소를 하나 추출 find_..

fenderist.tistory.com