XPATH 이용하기

이해하기 쉽고, 장황하지 않은 자료를 기반으로 강의를 진행합니다.
잔재미코딩 소식 공유
좀더 제약없이, IT 컨텐츠를 공유하고자, 자체 온라인 사이트와, 다음 두 채널도 오픈하였습니다
응원해주시면, 곧 좋은 컨텐츠를 만들어서 공유하겠습니다
●  잔재미코딩 뉴스레터 오픈 [구독해보기]
●  잔재미코딩 유투브 오픈 [구독해보기]

10. XPATH를 이용하여 크롤링하기

  • 마크업에서 요소를 정의하기 위해 path 경로를 사용하는 방법
  • find_element_by_xpath(), find_elements_by_xpath() 메서드로 검색 가능
  • XPATH 문법 상세 참고
  • / : 절대경로를 나타냄
  • // : 문서내에서 검색
  • //@href : href 속성이 있는 모든 태그 선택
  • //a[@href='http://google.com'] : a 태그의 href 속성에 http://google.com 속성값을 가진 모든 태그 선택
  • (//a)[3] : 문서의 세 번째 링크 선택
  • (//table)[last()] : 문서의 마지막 테이블 선택
  • (//a)[position() < 3] : 문서의 처음 두 링크 선택
  • //table/tr/* 모든 테이블에서 모든 자식 tr 태그 선택
  • //div[@*] 속성이 하나라도 있는 div 태그 선택
In [9]:
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/20170922175202762')

title = driver.find_element_by_xpath("//title") # 문서내의 어떤 태그든지 가능

# head 태그 안에 있는 title 정보는 get_attribute('text') 메서드로 추출할 수 있습니다.
print (title.get_attribute('text'))
driver.quit()
아이폰8 출시..예전같은 열기는 없었다 | Daum 뉴스
In [62]:
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/20170922182449443')

title = driver.find_element_by_xpath("/html/head/title") # 절대경로

# head 태그 안에 있는 title 정보는 get_attribute('text') 메서드로 추출할 수 있습니다.
print (title.get_attribute('text'))
driver.quit()
'포켓몬고' 상륙 1주일.. 대한민국 곳곳이 들썩 | Daum 뉴스
In [70]:
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/20170202185812986')

title = driver.find_element_by_xpath("/html//title") # html 태그 내에서 다시 검색

# head 태그 안에 있는 title 정보는 get_attribute('text') 메서드로 추출할 수 있습니다.
print (title.get_attribute('text'))
driver.quit()
'포켓몬고' 상륙 1주일.. 대한민국 곳곳이 들썩 | Daum 뉴스
  • 속성으로 검색하는 XPATH 문법: 태그[@속성=속성값]
본 자료 보다 업데이트된 자료와 함께 온라인 강의로 익히면 체계적으로 이해할 수 있습니다!
퀄러티가 다른 온라인 강의로 차근차근 익혀보세요
In [71]:
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/20170202185812986')

#soup.find('h3', attrs = {'class' : 'tit_s'})
title_content = driver.find_element_by_xpath("//h3[@class='tit_view']")

# body 안에 있는 태그 요소는 .text 로 추출할 수 있습니다. (출력이 잘 안되면, 둘다 써보셔도 좋습니다.)
print (title_content.text)
driver.quit()
'포켓몬고' 상륙 1주일.. 대한민국 곳곳이 들썩
In [ ]:
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')

body = driver.find_element_by_xpath("//div[@id='harmonyContainer']")
for p in body.find_elements_by_tag_name('p'):
    print (p.text)
driver.quit()
연습문제 http://v.media.daum.net/v/20170202180355822 페이지에서

[김익현의 미디어 읽기] '마이너리티 리포트'와 AI

를 XPATH로 크롤링해서 출력하세요