Scrapy - Objets de liste de sélection

Exemples de sélecteurs sur réponse HTML

Voici quelques exemples sur HTMLResponse et nous aurons l'objet HTMLResponse, qui est instancié avec le sélecteur, illustré comme suit -

res = Selector(html_response)

Vous pouvez sélectionner le h2 éléments du corps de la réponse HTML, qui renvoie l'objet SelectorList sous la forme -

>>res.xpath("//h2")

Vous pouvez sélectionner le h2 éléments du corps de la réponse HTML, qui renvoie la liste des chaînes Unicode sous la forme -

>>res.xpath("//h2").extract()

Il renvoie les éléments h2.

et

>>res.xpath("//h2/text()").extract()

Il renvoie le texte défini sous la balise h2 et n'inclut pas les éléments de balise h2.

Vous pouvez parcourir les balises p et afficher l'attribut de classe comme -

for ele in res.xpath("//p"):
   print ele.xpath("@class").extract()

Exemples de sélecteurs sur réponse XML

Voici quelques exemples sur XMLResponse et nous aurons l'objet XMLResponse, qui est instancié avec le sélecteur, illustré comme suit -

res = Selector(xml_response)

Vous pouvez sélectionner les éléments de description à partir du corps de la réponse XML, qui renvoie l'objet SelectorList comme -

>>res.xpath("//description")

Vous pouvez obtenir la valeur du prix à partir du flux XML de Google Base en enregistrant un espace de noms comme -

>>res.register_namespace("g", "http://base.google.com/ns/1.0")
>>res.xpath("//g:price").extract()

Suppression des espaces de noms

Lorsque vous créez les projets Scrapy, vous pouvez supprimer les espaces de noms à l'aide de la méthode Selector.remove_namespaces () et utiliser les noms d'élément pour fonctionner correctement avec XPaths.

Il y a deux raisons pour ne pas appeler la procédure de suppression d'espace de noms toujours dans le projet -

  • Vous pouvez supprimer l'espace de noms qui nécessite de répéter le document et de modifier tous les éléments qui conduisent à une opération coûteuse pour analyser les documents par Scrapy.

  • Dans certains cas, vous devez utiliser des espaces de noms et ceux-ci peuvent entrer en conflit avec certains noms d'élément et certains espaces de noms. Ce type de cas se produit très souvent.