파이썬 웹 크롤링 selenium

Happy_JG·2023년 8월 28일
0

크롤링

목록 보기
4/8
post-custom-banner

Selenium 라이브러리

브라우저를 자동제어하여 크롤링을 자동화시키는 라이브러리이다. 동적 크롤링을 진행할 때 사용된다. 사용하기 위해서는 반드시 설치를 해야한다.

라이브러리 설치

!pip install selenium

Selenium 최신버전 업그레이드

!pip install -U selenium

브라우저 역할을 해주는 라이브러리

from selenium import webdriver as wb

#컴퓨터용 키보드역할
from selenium.webdriver.common.keys import Keys

#선택자의 구분자 역할
from selenium.webdriver.common.by import By

크롬창 실행

wb.Chrome()
#웹드라이버야 크롬을 실행해줘!

변수 설정

driver = wb.Chrome()

특정 페이지로 이동(요청)

driver.get('http://www.naver.com')

검색창에 검색어 입력

검색창의 위치를 알아온다.

#query

driver.find_element
id는 하나일 뿐더러 우리가 필요한 검색창은 한 개기 때문에 element를 사용하고, 구분자 역할을 해주는 라이브러리 by를 써서 구분한다.

search = driver.find_element(By.ID,"query")
#By + tab

Keys 라이브러리를 이용하여 컴퓨터가 직접 검색창에 입력하도록 설정

search.send_keys("이강인")

Keys 라이브러리를 이용하여 컴퓨터가 엔터를 누르도록 설정

search.send_keys(Keys.ENTER)

스크롤을 화면 최하단으로 이동

화면 밑에 있는 데이터도 로딩하여 데이터 수집하기 위해서 키보드에 있는 End키를 보내주어야 한다.

화면 이동
END = 페이지 맨 아래로 이동
HOME = 페이지 맨 위로 이동
PAGE_DOWN = 스크롤 다운
PAGE_UP = 스크롤 업

최하단으로 가기 위해서 <body>태그에 End키를 보내자.

body = driver.find_element(By.TAG_NAME,"body")
body.send_keys(Keys.END)

페이지 뒤로가기

driver.back()
#뒤로가기 버튼은 html태그가 아니다.

다시 한 번 검색창에 새로운 검색어 입력

search.send_keys("김민재")

#StaleElementReferenceException            Traceback (most #recent call last)
#Cell In[23], line 1
#----> 1 search.send_keys("김민재")

화면이 이동했다면 컴퓨터는 과거 화면을 다 잊어버린다. 반드시 요소를 새로 검색 후 새로 명령을 부여해야 한다.

search = driver.find_element(By.ID,"query")
search.send_keys("김민재")

엔터가 아닌 검색 버튼을 클릭

btn = driver.find_element(By.CLASS_NAME,"btn_search")
btn.click()

창을 종료

driver.quit()

time 라이브러리

클라이언트가 서버에게 무리한 요청을 하면 서버는 부하를 느끼게 되고, 아이피 차단을 당할 수 있다.

import time
time.sleep(5) #5초간 쉬어라

요청과 응답 사이에 time함수를 사용한다. 일반적으로 클릭 이후에 time.sleep()을 사용한다.

try:
    for i in range(15):
        btn = driver.find_element(By.CSS_SELECTOR,".c_05")
        btn.click()
        time.sleep(5)
except : 
    print("더보기가 없습니다.")
profile
hello!
post-custom-banner

0개의 댓글