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.