Web 크롤링/Python Crawling

파이썬 selenium 으로 스크래핑 기초 학습

Link2Me 2021. 6. 26. 07:20
728x90

Beautiful Soap는 웹사이트에서 버튼을 클릭해야 얻을 수 있는 데이터라던가, Javascript 에 조건이 충족되어야만 얻을 수 있는 데이터에 접근하는 것에 한계가 있다.
그래서, 직접적으로 웹 사이트에 접근할 수 있게 해주는 Selenium을 사용해야 한다. 웹 브라우저를 대신해 줄 Driver가 필요하다.

 

selenium 설치

pip install selenium

pip install chromedriver-autoinstaller 

# pip install selenium
# pip install chromedriver-autoinstaller 
 
from selenium import webdriver
import chromedriver_autoinstaller
# 파이썬으로 셀레니움을 사용하기 위해 필요한 모듈을 import한다.
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.alert import Alert
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
 
options = Options()
options.add_argument('disable-gpu');
options.add_argument('disable-extensions');
options.add_argument('proxy-server="direct://"');
options.add_argument('proxy-bypass-list=*');
options.add_argument('start-maximized');
# options.add_argument('headless'); # headless는 화면이나 페이지 이동을 표시하지 않고 동작하는 모드
 
# webdirver 설정(Chrome, Firefox 등)
# autoinstaller를 설정한 경우
chromedriver_autoinstaller.install()
driver = webdriver.Chrome()
# 직접 PC에 설치한 드라이버 경로를 설정한 경우
# driver = webdriver.Chrome('./webdriver/chrome/chromedriver.exe')
 
# 크롬 브라우저 내부 대기 (암묵적 대기)
driver.implicitly_wait(5)
 
# 속성 확인
print(dir(driver))
 
# 브라우저 사이즈
driver.set_window_size(1920,1280)
 
# 페이지 이동(열고 싶은 URL)
# driver.get('https://www.daum.net')
driver.get('https://www.naver.com')
 
# 페이지 내용
print('Page Contents : {}'.format(driver.page_source))
 
print()
 
# 세션 값 출력
print('Session ID : {}'.format(driver.session_id))
 
# 타이틀 출력
print('Title : {}'.format(driver.title))
 
# 현재 URL 출력
print('URL : {}'.format(driver.current_url))
 
# 현재 쿠기 정보 출력
print('Cookies : {}'.format(driver.get_cookies()))
 
# 검색창 input 선택
# element = driver.find_element_by_css_selector('div.inner_search > input.tf_keyword') # 다음 검색
element = driver.find_element_by_css_selector('div.green_window > input#query'# 네이버 검색
 
# 검색어 입력
element.send_keys('마마무')
 
# 검색(Form Submit)
element.submit()
 
# 스크린 샷 저장 1
savePath = "c:/Users/zx/Documents/Python/"
driver.save_screenshot(savePath + 'website_ch1.png')
 
# 스크린 샷 저장 2
driver.get_screenshot_as_file(savePath+ 'website_ch2.png')
 
# 브라우저 종료
driver.quit()
 

crawling_16.py
0.00MB

검색창 input 태그를 찾는 방법이다.

 

728x90