2017-10-04 1 views
0

J'essaie d'explorer un site de magasinage pour les prix, en utilisant scrapy. Considérez ce code ci-dessous, exécuté de shell scrapy pour le site:Utilisation de Scrapy pour ramasser des données de magasin

response.xpath('//*[@id="content"]/div[2]/div/div/div[5]/div[1]').extract() 

Le résultat est le suivant:

[u'<div class="subcategory-title"><span class="placeholder"></span></div>'] 

Mais sur le code source de la page (voir à l'aide des outils de développement de chrome), je peux voir ce pour cette ligne:

<div class="subcategory-title">Organic Vegetables</div> 

Premièrement, comment se fait-il que les «légumes biologiques» soient cachés par l'envergure? Deuxièmement, comment puis-je obtenir le texte au lieu de l'élément span vide?

Merci.

+0

Probablement vous avez oublié d'ajouter '/ texte()' à votre XPath – AndMar

+0

Comment puis-je obtenir la même chose en utilisant BeautifulSoup et demande? C'est au lieu d'utiliser Scrapy ou Splash? – osbon123

+0

Essayez simplement de changer votre xpath en // // * [@ id = "content"]/div [2]/div/div/div [5]/div [1]/text() ' – AndMar

Répondre

0

Il se peut que vous voyiez une plage car le noeud de texte est généré dynamiquement à l'aide de JavaScript.

Une bibliothèque qui fonctionne bien avec Scrapy tel que Splash peut vous aider à gratter la page souhaitée.

Pour plus d'informations sur cette visite ce lien: scrapy-splash usage for rendering javascript