Localisateurs CSS

Web Scraping en Python

Thomas Laetsch

Data Scientist, NYU

Pierre de Ro(CS)ette

  • Remplacer / par > (sauf premier caractère)
    • XPath : /html/body/div
    • Sélecteur CSS : html > body > div
  • Remplacer // par un espace (sauf premier caractère)
    • XPath : //div/span//p
    • Sélecteur CSS : div > span p
  • Remplacer [N] par :nth-of-type(N)
    • XPath : //div/p[2]
    • Sélecteur CSS : div > p:nth-of-type(2)
Web Scraping en Python

Pierre de Ro(CS)ette

XPATH

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

CSS

css = 'html > body div > p:nth-of-type(2)'
Web Scraping en Python

Attributs en CSS

  • Pour cibler par classe, utilisez un point .
    • Exemple : p.class-1 sélectionne tous les paragraphes de class-1
  • Pour cibler par id, utilisez un dièse #
    • Exemple : div#uid sélectionne le div dont l’id vaut uid
Web Scraping en Python

Attributs en CSS

Sélectionner les paragraphes dans la classe class1 :

css_locator = 'div#uid > p.class1'

Sélectionner tous les éléments dont la classe est class1 :

css_locator = '.class1'
Web Scraping en Python

État de la classe

css = '.class1'

Sélection par classe - uniquement classe.png

Web Scraping en Python

État de la classe

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

Sélection par classe - XPath égal.png

Web Scraping en Python

État de la classe

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

Sélection par classe - XPath contient.png

Web Scraping en Python

Sélecteurs avec 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")
sortie : [<Selector xpath='...' data='<p>Hello World!</p>'>] 

>>> sel.css("div > p").extract()
sortie : [ '<p>Hello World!</p>' ]
Web Scraping en Python

À très CSS !

Web Scraping en Python

Preparing Video For Download...