Localizadores CSS

Raspagem da Web em Python

Thomas Laetsch

Data Scientist, NYU

Pedra de Rosetta do CSS

  • Substitua / por > (exceto o primeiro caractere)
    • XPath: /html/body/div
    • Localizador CSS: html > body > div
  • // vira espaço em branco (exceto o primeiro caractere)
    • XPath: //div/span//p
    • Localizador CSS: div > span p
  • [N] vira :nth-of-type(N)
    • XPath: //div/p[2]
    • Localizador CSS: div > p:nth-of-type(2)
Raspagem da Web em Python

Pedra de Rosetta do CSS

XPATH

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

CSS

css = 'html > body div > p:nth-of-type(2)'
Raspagem da Web em Python

Atributos no CSS

  • Para buscar por classe, use ponto .
    • Ex.: p.class-1 seleciona todos os parágrafos da class-1
  • Para buscar por id, use cerquilha #
    • Ex.: div#uid seleciona o elemento div com id igual a uid
Raspagem da Web em Python

Atributos no CSS

Selecione parágrafos dentro da classe class1:

css_locator = 'div#uid > p.class1'

Selecione todos os elementos cuja classe seja class1:

css_locator = '.class1'
Raspagem da Web em Python

Status da classe

css = '.class1'

Seleção por classe — apenas classe (CSS).png

Raspagem da Web em Python

Status da classe

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

Seleção por classe — XPath (igual).png

Raspagem da Web em Python

Status da classe

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

Seleção por classe — XPath (contém).png

Raspagem da Web em Python

Seletores com 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>' ]
Raspagem da Web em Python

C(SS) até já!

Raspagem da Web em Python

Preparing Video For Download...