Sélecteurs CSS

Extraction de données Web en Python

Thomas Laetsch

Data Scientist, NYU

Rosetta CSStone

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

Rosetta CSStone

XPATH

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

CSS

css = 'html > body div > p:nth-of-type(2)'
Extraction de données Web en Python

Attributs en CSS

  • Pour trouver un élément par classe, utilisez un point .
    • Exemple : p.class-1 sélectionne tous les paragraphes appartenant à class-1
  • Pour trouver un élément par identifiant, utilisez le dièse #
    • Exemple : div#uid sélectionne l'élément div dont id vaut uid
Extraction de données Web 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 l'attribut de classe appartient à class1 :

css_locator = '.class1'
Extraction de données Web en Python

État de la classe

css = '.class1'

Sélection par classe — XPath, classe seule

Extraction de données Web en Python

État de la classe

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

Sélection par classe — XPath, égalité

Extraction de données Web en Python

État de la classe

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

Sélection par classe — XPath, contient

Extraction de données Web 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")
out: [<Selector xpath='...' data='<p>Hello World!</p>'>] 

>>> sel.css("div > p").extract()
out: [ '<p>Hello World!</p>' ]
Extraction de données Web en Python

À C(SS) très bientôt !

Extraction de données Web en Python

Preparing Video For Download...