Lorsque j'inspecte le site Web (recherche google), je suis en mesure de sélectionner le href souhaité en recherchant ce //div[@class="r"]/a/@href via le Finder. Mais lors de l'utilisation de scrapy et de l'accès par response.xpath('//div[@class="r"]/a/@href'), cela retournera vide. De nombreux autres Xpath tels que le titre du lien seront également vides. Curieusement, je peux obtenir quelque chose en utilisant response.xpath('//cite').get(), qui est fondamentalement le href mais incomplet.

Si je le fais response.body, je suis en mesure de voir la référence href souhaitée dans le code, mais je ne sais pas comment y accéder. Essayer de le sélectionner à l'aide de méthodes traditionnelles css ou xpath qui fonctionneraient dans n'importe quel autre site Web a été futile.

0
B B 15 mars 2019 à 22:02

2 réponses

Meilleure réponse

La raison pour laquelle le xpath que vous utilisez fonctionne sur votre navigateur mais pas dans la réponse, c'est parce que Google affiche la page différemment si JS est désactivé, ce qui est le cas pour scrapy mais pas votre navigateur, vous devrez donc utiliser un XPath cela fonctionnera pour les deux ou juste le premier cas.

Celui-ci ne fonctionne pour aucun JS mais ne fonctionnera pas dans le navigateur (si JS est activé):

//div[@id='ires']//h3/a[1]/@href

Cela renverra la première URL du premier résultat.

2
Ayoub_B 15 mars 2019 à 19:48

Essayez ce qui suit.

response.xpath("//div[@class='r']").xpath("//a/@href").extract()
0
supputuri 15 mars 2019 à 19:23