본문 바로가기
DATA/[ 모각코+ 12월 과정 ] 웹 크롤링

[ 모각코+ 11일차 ] 동적 크롤링 사용해보기 ②

by 2CHAE._.EUN 2022. 1. 4.

[ 동적 크롤링 ]

 

동적 크롤링은 데이터를 즉시 수집하기 못하기 때문에 데이터를 수집하기 위한 과정이 매우 중요.

 

* id는 한 웹 페이지 내에서 유일한 선택자 이므로 크롤링을 할 때 메우 유용하게 사용됨

 

find_element_by_css_selector

 

find_element_by_css_selector 함수는 인자로 태그와 선택자의 조합을 받고 해당 HTML 요소를 리턴해준다.

 

find_element_by_css_selector(" 태그#선택자값 ")

 

send_keys

 

send_keys 함수는 HTML 요소에 데이터를 전송하는 함수이다. HTML 요소에 메소드로 사용하고, 

인자로 전송할 값을 넣어준다.

 

[ selenium의 HTML요소 ].send_keys(" 전송할 값 ")

 

click

 

click 함수는 HTML 요소를 클릭해주는 함수이다.

 

[ selenium의 HTML요소 ].click()

 

동적 크롤링 코드 작성하기

 

# 라이브러리 불러오기
from selenium import webdriver
import time

# 웹 드라이버 불러오기
driver = webdriver.Chrome('./chromedriver')

URL = 'https://papago.naver.com/'
driver.get(URL) #get 함수를 이용해서 웹 사이트의 내용 받아오기

time.sleep(10) #time 라이브러리의 sleep 함수를 사용해서 지연시간 주기

word = input("번역하고 싶은 단어 입력 : ")

#find_element_by_css_selector함수는 해당 HTML 요소를 리턴
form = driver.find_element_by_css_selector("textarea#txtSource")

#send_keys 함수를 사용해서 HTML 요소에 데이터를 전송
form.send_keys(word)

#find_element_by_css_selector함수는 해당 HTML 요소인 button을 리턴
button = driver.find_element_by_css_selector("button#btnTranslate")
#click 함수를 이용해서 HTML 요소를 클릭
button.click()
#버튼을 누르고 나서 시간 지연 넣어주기
time.sleep(2)

#find_element_by_css_selector함수는 해당 HTML 요소인 결과값 div를 리턴
result = driver.find_element_by_css_selector("div#txtTarget")

print(word, "->", result.text)

driver.close()

 


[ 11일차 문제 ]

 


# 라이브러리 불러오기
from selenium import webdriver
import time

# 웹 드라이버 불러오기
driver = webdriver.Chrome('./chromedriver')

URL = 'https://papago.naver.com/'
driver.get(URL) #get 함수를 이용해서 웹 사이트의 내용 받아오기

time.sleep(10) #time 라이브러리의 sleep 함수를 사용해서 지연시간 주기

my_dict = dict()

while True :
    word = input("번역하고 싶은 단어 입력 ( 0 입력시 종료 ) : ")

    if word == '0' :
        break

    #find_element_by_css_selector함수는 해당 HTML 요소를 리턴
    form = driver.find_element_by_css_selector("textarea#txtSource")

    #send_keys 함수를 사용해서 HTML 요소에 데이터를 전송
    form.send_keys(word)

    #find_element_by_css_selector함수는 해당 HTML 요소인 button을 리턴
    button = driver.find_element_by_css_selector("button#btnTranslate")
    #click 함수를 이용해서 HTML 요소를 클릭
    button.click()
    #버튼을 누르고 나서 시간 지연 넣어주기
    time.sleep(2)

    #find_element_by_css_selector함수는 해당 HTML 요소인 결과값 div를 리턴
    result = driver.find_element_by_css_selector("div#txtTarget")
    my_dict[word] = result.text

    # HTML 요소를 초기화
    form.clear()


print(my_dict)

driver.close()

 

저작권 출처 : https://cafe.naver.com/codeuniv

 

코딩 커뮤니티 - 코뮤니티 [파이썬/... : 네이버 카페

코뮤니티 [코딩공부/독학/스터디/대외활동] : python, C언어, java, 자바스크립트, HTML, CSS, 웹/앱개발

cafe.naver.com