CSS 선택자

Python으로 하는 웹 스크레이핑

Thomas Laetsch

Data Scientist, NYU

로제타 CSStone

  • 첫 글자를 제외하고 /> 로 바꿉니다
    • XPath: /html/body/div
    • CSS 선택자: html > body > div
  • 첫 글자를 제외하고 // 는 공백으로 바꿉니다
    • XPath: //div/span//p
    • CSS 선택자: div > span p
  • [N]:nth-of-type(N) 으로 바꿉니다
    • XPath: //div/p[2]
    • CSS 선택자: div > p:nth-of-type(2)
Python으로 하는 웹 스크레이핑

로제타 CSStone

XPATH

xpath = '/html/body//div/p[2]'

CSS

css = 'html > body div > p:nth-of-type(2)'
Python으로 하는 웹 스크레이핑

CSS의 속성

  • 클래스로 찾으려면 마침표 . 사용
    • 예: p.class-1class-1 인 모든 p 요소를 선택
  • id로 찾으려면 # 사용
    • 예: div#uididuid 인 div 요소를 선택
Python으로 하는 웹 스크레이핑

CSS의 속성

클래스 class1 내부의 p 요소 선택:

css_locator = 'div#uid > p.class1'

클래스 속성이 class1 인 모든 요소 선택:

css_locator = '.class1'
Python으로 하는 웹 스크레이핑

클래스 상태

css = '.class1'

클래스 선택-XPath-classonly.png

Python으로 하는 웹 스크레이핑

클래스 상태

xpath = '//*[@class="class1"]'

클래스 선택-XPath-일치.png

Python으로 하는 웹 스크레이핑

클래스 상태

xpath = '//*[contains(@class,"class1")]'

클래스 선택-XPath-contains.png

Python으로 하는 웹 스크레이핑

CSS로 선택자 사용

from scrapy import Selector 

html = '''
<html>
  <body>
    <div class="hello datacamp">
      <p>Hello World!</p>
    </div>
    <p>Enjoy DataCamp!</p>
  </body>
</html>
''' 
sel = Selector( text = html )
>>> sel.css("div > p")
out: [<Selector xpath='...' data='<p>Hello World!</p>'>] 

>>> sel.css("div > p").extract()
out: [ '<p>Hello World!</p>' ]
Python으로 하는 웹 스크레이핑

곧 C(SS)에서 뵙겠습니다!

Python으로 하는 웹 스크레이핑

Preparing Video For Download...