goodthings4me.tistory.com
■ 셀레니움(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 |
댓글