-
파이썬 크롤링(Crawling) - 셀레니움(Selenium) 연습 #1코딩 연습/코딩배우기 2020. 11. 9. 22:46
■ 셀레니움(Selenium)이란?
o 셀레니움(Selenium)은 웹사이트 테스트 목적으로 나옴 o 웹브라우저 컨트롤, 동작 제어, 자동화 등 가능(사람이 접속하는 것처럼) o pip install selenium (selenium 설치) o 웹드라이버 설치 --> 셀레니움이 웹드라이버 제어 --> 웹드라이버를 통해 브라우저 제어 (Webdriver를 가지고 자동으로 크롬 Open, Control) o 셀레니움 크롬드라이버 다운로드 - 사이트 : https://sites.google.com/a/chromium.org/chromedriver/downloads - 크롬드라이버를 크롬 버전에 맞춰서 받아야 한다. - 크롬 버전 확인은 크롬 주소창에 "Chrome://version" 입력하여 확인한다. - 운영체제에 맞는 파일 다운로드(Windows의 경우 32/64비트 상관없음) - chromedriver.exe 파일 위치를 기억한다.(파일의 속성에서 위치를 보면 됨) (예로, C:/Temp/chromedriver.exe 처럼 임의의 폴더에 위치시켜 사용 가능함)
from selenium import webdriver chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('--headless') ## 브라우저 안뜨게 chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('--disable-dev-shm-usage') wd = webdriver.Chrome('C:/Temp/chromedriver.exe', options = chrome_options) print(type(wd)) # <class 'selenium.webdriver.chrome.webdriver.WebDriver'> url = 'http://suanlab.com/' wd.get(url) #wd.get_screenshot_as_file('suanlab.png') ## 이미지 캡쳐 (필요시 활용) label_tags = wd.find_elements_by_tag_name('label') ## list #print(label_tags) #[<selenium.webdriver.remote.webelement.WebElement (session="cb3ff011d01898debe3550d0ef7ddab7", #element="9bbbc029-3213-4363-91ec-539cbdfa690b")>, for label in label_tags: print(label.text) ## CSS Selector 사용할 경우, for label in wd.find_elements_by_css_selector('#wrapper > section > div > div > div > div > div > label'): print(label.text) toggle_class = wd.find_element_by_css_selector('#wrapper > section > div > div > div > div') ## toggle이 부모 태그의 속성에도 있을 경우, 부모태그 기준으로 한 번 지정 후, 사용 for label in toggle_class.find_elements_by_class_name('toggle'): print(label.text) ## CSS Selector 중 xpath 사용할 경우, for label in wd.find_elements_by_xpath('//*[@id="wrapper"]/section/div/div/div/div/div/label'): print(label.text) ## webdriver.common.by 사용 시, from selenium.webdriver.common.by import By for label in wd.find_elements(By.TAG_NAME, 'label'): print(label.text) for label in wd.find_elements(By.CSS_SELECTOR, '#wrapper > section > div > div > div > div > div > label'): print(label.text)
[위 예시의 실행 결과]
[2020-05-20] "인공지능의 보안 위협" 칼럼
[2020-03-04] "데이터 경제 시대" 칼럼
[2019-12-25] "마이데이터 시대의 도래 데이터 주권과 새로운 가치" 칼럼
[2019-09-25] "유튜브 탄생과 크리에이터 시대" 칼럼
[2019-09-04] "농업으로 들어간 인공지능" 칼럼
[2019-08-07] "AI시대 지배할 것인가 지배당하며 살 것인가" 칼럼
[2018-12-30] "파이썬으로 텍스트 분석하기" 책 출판■ 네이버 웹툰(Webtoon) 제목 추출하기 - 셀레니움(Selenium) 사용
from selenium import webdriver import time chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('--headless') wd = webdriver.Chrome('C:/Temp/chromedriver.exe', options = chrome_options) url = 'https://comic.naver.com/index.nhn' wd.get(url) for title in wd.find_elements_by_class_name('title'): print(title.text) [실행 결과] 부산스런 웹툰 오늘의 순정망화 인생존망 서브 콤플렉스 칼가는 소녀 컷툰 독립일기 20&21세기남매 하나리즈 더리틀피오니스 이래서 애들은 158동 진상부부 어쩌면 마왕이 더 힘들지도 모릅니다 부사관 후보생, 유아미! 쓰레기 성의 소녀 포 어 베러월드 대표님 저 결혼했어요 열화광비 네크로망스 네크로망스 [단행본] 마황의 귀환 무련전봉
[참고] 이수안컴퓨터연구소
'코딩 연습 > 코딩배우기' 카테고리의 다른 글
파이썬 크롤링(Crawling) - 셀레니움(Selenium) 연습 #2 (0) 2020.11.10 파이썬의 일급 객체 함수 개념을 이용한 클로저(closure) 연습 (0) 2020.11.10 파이썬으로 아스키(ASCII) Code 출력, 그리고 영문자에 대한 진수값들 (0) 2020.11.08 파이썬 크롤링(Crawling) 연습 - BeautifulSoup Documentation #2 (find_all, find, select 등) (0) 2020.11.08 파이썬 크롤링(Crawling) 연습 - BeautifulSoup Documentation #1 (html 태그로 접근, 객체 4종류 등) (0) 2020.11.07