web-dev-qa-db-fra.com

Obtenez href en utilisant le sélecteur css avec Scrapy

Je veux obtenir la valeur href:

<span class="title">
  <a href="https://www.example.com"></a>
</span>

J'ai essayé ceci:

Link = Link1.css('span[class=title] a::text').extract()[0]

Mais je reçois juste le texte à l'intérieur du <a>. Comment puis-je obtenir le lien dans le href?

37
Marco Dinatsoli

Ce que vous recherchez, c'est:

Link = Link1.css('span[class=title] a::attr(href)').extract()[0]

Puisque vous correspondez également à un attribut span "class", vous pouvez même écrire

Link = Link1.css('span.title a::attr(href)').extract()[0]

Veuillez noter que le pseudo-élément ::text Et le pseudo-élément fonctionnel ::attr(attributename) sont ET NON les sélecteurs CSS3 standard. Ce sont des extensions des sélecteurs CSS dans Scrapy 0.20.


Edit (2017-07-20): à partir de Scrapy 1.0, vous pouvez utiliser .extract_first() au lieu de .extract()[0]

Link = Link1.css('span[class=title] a::attr(href)').extract_first()
Link = Link1.css('span.title a::attr(href)').extract_first()
57
paul trmbrth
Link = Link1.css('span.title a::attr(href)').extract_first()

vous pouvez en obtenir plus d'informations

7
Eddy

Cela fera le travail:

Link = Link1.css('span.title a::attr(href)').extract()

Link aura la valeur: https://www.example.com

0
Jorgesys