온라인 강의 자료모음 기업교육

Selenium(headless Chrome)에서 CSS3 Selector 이용하기

이해하기 쉽고, 장황하지 않은 자료를 기반으로 강의를 진행합니다.
AI · 풀스택 · 데이터 로드맵 Dave Lee 한 강사가 설계부터 강의까지 모두
사이트 바로가기
PhantomJS 지원 종료 안내

PhantomJS는 현재 개발이 중단되었습니다. Headless Chrome/Firefox와 Selenium WebDriver(ChromeDriver/GeckoDriver) 또는 Playwright 등 최신 대안을 사용하세요.

9. Selenium(headless Chrome)에서 CSS3 Selector 이용하기

9.1 클래스로 찾기 예

In [22]:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By

options = Options()
options.add_argument("--headless=new")
options.add_argument("--no-sandbox")
options.add_argument("--disable-dev-shm-usage")

driver = webdriver.Chrome(options=options)
driver.get('http://v.media.daum.net/v/20170202180355822')

# 클래스가 tit_view인 h3태그
title = driver.find_element(By.CSS_SELECTOR, "h3.tit_view")
print(title.text)
driver.quit()
포커 정복한 AI, 어디까지 진화할까
연습문제 (다음 코드 문제점 확인하고 수정하기)
아이디로 찾기
- 팁: 이전 시간에 설명한 CSS Selector 내용 상기
1. 에러 메세지를 읽고, 어떤 라인에서 문제가 있는지를 확인한 후
2. 해당 라인의 코드에 어떤 문제가 있는지를 CSS Selector 문법과 해당 웹페이지 소스를 비교해가며 확인
In [ ]:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By

options = Options()
options.add_argument("--headless=new")
options.add_argument("--no-sandbox")
options.add_argument("--disable-dev-shm-usage")

driver = webdriver.Chrome(options=options)
driver.get('http://v.media.daum.net/v/20170202180355822')

title_data = driver.find_element(By.CSS_SELECTOR, 'html head title')
print(title_data.get_attribute('text'))

title_data = driver.find_element(By.CSS_SELECTOR, 'html > title')
# head 태그 안에 있는 title 정보는 get_attribute('text') 메서드로 추출할 수 있습니다. 
print(title_data.get_attribute('text'))

contents = driver.find_element(By.CSS_SELECTOR, "div#harmonyContainer")
# body 안에 있는 태그 요소는 .text 로 추출할 수 있습니다. (출력이 잘 안되면, 둘다 써보셔도 좋습니다.)
print(contents.text)

for p in contents.find_elements(By.TAG_NAME, 'p'):
    print(p.text)

driver.quit()
  • 속성으로 찾기

고급 크롤링 기술을 체계적으로 정리한 온라인 강의입니다

현존 최강 파이썬 고급 크롤링 부트캠프

동적 웹페이지, 대용량 데이터 수집 기술

In [25]:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By

options = Options()
options.add_argument("--headless=new")
options.add_argument("--no-sandbox")
options.add_argument("--disable-dev-shm-usage")

driver = webdriver.Chrome(options=options)
driver.get('http://v.media.daum.net/v/20170202180355822')

# role attribute가 navigation인 div태그
nav = driver.find_element(By.CSS_SELECTOR, "div[role='navigation']")
print(nav.text)
driver.quit()
홈
사회
정치
경제
국제
문화
IT
랭킹
연재
포토
TV
1boon
스토리펀딩
서울
서울 23 ℃