웹크롤링 - Selenium 과 PhantomJS에서 CSS3 Selector 이용하기

9. Selenium 과 PhantomJS에서 CSS3 Selector 이용하기

9.1 클래스로 찾기 예

from selenium import webdriver

# driver = webdriver.PhantomJS('C:/dev_python/phantomjs-2.1.1-windows/bin/phantomjs.exe') # 윈도우
driver = webdriver.PhantomJS('/usr/local/Cellar/phantomjs/2.1.1/bin/phantomjs') # 맥
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, 어디까지 진화할까
연습문제2 (다음 코드 문제점 확인하고 수정하기)
아이디로 찾기
- 팁: 이전 시간에 설명한 CSS Selector 내용 상기
1. 에러 메세지를 읽고, 어떤 라인에서 문제가 있는지를 확인한 후
2. 해당 라인의 코드에 어떤 문제가 있는지를 CSS Selector 문법과 해당 웹페이지 소스를 비교해가며 확인
from selenium import webdriver

driver = webdriver.PhantomJS('C:/dev_python/phantomjs-2.1.1-windows/bin/phantomjs.exe') # 윈도우
# driver = webdriver.PhantomJS('/usr/local/Cellar/phantomjs/2.1.1/bin/phantomjs') # 맥
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()
  • 속성으로 찾기
from selenium import webdriver

# driver = webdriver.PhantomJS('C:/dev_python/phantomjs-2.1.1-windows/bin/phantomjs.exe') # 윈도우
driver = webdriver.PhantomJS('/usr/local/Cellar/phantomjs/2.1.1/bin/phantomjs') # 맥
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 ℃