본문 바로가기

코린이_탈출/크롤링

[모각코_크롤링] 동적 크롤링 1

[공부 내용]

> chromedriver란?

크롬 브라우저의 'webdriver'

> webdriver

많은 브라우저(크롬,  파이어폭스 등), 운영체제 및 프로그래밍 언어를 지원하며 웹 응용 프로그램들의 테스트를 단순화 및 가속화해주는 툴

사용하는 브라우저에 맞게 설치해줘야 한다.

> 라이브러리 'selenium'

웹 드라이버를 사용하여 자동화를 실현하는 라이브러리. 데이터를 수집하는 방식 그대로 크롤링하는 기계를 만든다.

마우스 클릭, 키보드 입력, 뒤로가기 등의 동작이 가능하다.

- 내장 함수

find_element_by_ ?? () : 정적 크롤링의 find()와 같은 역할로, 크롤링을 위해 HTML 요소를 찾는 함수

# 기본 코드
driver.find_element_by_css_selector('태그 및 선택자')
# 기본 코드
driver.find_element_by_id('id')
driver.find_element_by_class_name('class')

# ex) '글쓰기' 버튼 - <a href="#" id="writeFormBtn" class="btn_type1 post_write _rosRestrict" onclick="clickcr(this,'abt.wrtlist', '', '', event);">
driver.find_element_by_id('writeFormBtn')
driver.find_element_by_class_name('btn_type1.post_write._rosRestrict')
# HTML 요소를 찾기 위한 적당한 id 혹은 class 등의 속성이 없을 경우 xpath를 사용

# 기본 코드
driver.find_element_by_xpath('XPath 선택자')

# ex) '글쓰기' 버튼의 'Copy XPath'결과 - //*[@id="writeFormBtn"]
driver.find_element_by_xpath('//*[@id="writeFormBtn"]')

 

find_elements_by_?? () : 정적 크롤링의 find_all()과 같은 역할. 입력한 태그 및 선택자에 해당하는 모든 HTML 요소를 찾는 함수

click() : HTML 요소를 클릭하는 함수

# 기본 코드
driver.find_element_by_??('태그 혹은 선택자').click()

# ex) '글쓰기' 버튼 클릭
driver.find_element_by_css_selector('a#writeFormBtn').click()

send_keys() : HTML 요소에 직접 텍스트를 입력하는 함수

# 기본 코드
driver.find_element_by_??().send_keys('텍스트')

# ex) 검색 칸에 '파이썬' 입력
driver.find_element_by_css_selector('input#query').send_keys('파이썬')

> 라이브러리 'time'

time.sleep()을 이용하여 크롤링이 끊기지 않도록 설정.

> driver.get( )

접속할 url 주소를 전달하기 위해서는 get() 함수를 사용.