Локатори 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-1 вибирає всі абзаци з класом class-1
  • Щоб знайти елемент за id, використайте решітку #
    • Приклад: div#uid вибирає елемент div з id, що дорівнює uid
Вебскрапінг у Python

Атрибути в CSS

Виберіть абзаци всередині класу class1:

css_locator = 'div#uid > p.class1'

Виберіть усі елементи, чий атрибут class має class1:

css_locator = '.class1'
Вебскрапінг у Python

Стан класу

css = '.class1'

Вибір за класом — лише class

Вебскрапінг у Python

Стан класу

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

Вибір за класом — рівність

Вебскрапінг у Python

Стан класу

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

Вибір за класом — contains

Вебскрапінг у 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...