2017-10-19 17 views
0

J'apprends le scrapy (avec splash) et construit une araignée pour gratter les résultats des pages js activées. Mon araignée fonctionne et renvoie les résultats pour les pages js. Cependant, il ne retourne pas le prix de ce lien https://www.zara.com/us/en/bejewelled-appliqu%C3%A9-dress-p07854034.html?v1=4818592&v2=733885Scrapy splash ne donne pas de résultats

xpath used: //*[contains(concat(" ", @class, " "), concat(" ", "_product-price", " "))]//span/text() 

Le XPath ci-dessus renvoie des résultats dans le navigateur, mais ne retourne pas quand il est invoqué par scrapy. Voici mon appel d'araignée

Pouvez-vous s'il vous plaît aider à comprendre pourquoi le prix du site n'est pas retourné?

Merci!

+0

Pour vérifier si c'est à cause de votre code ou configuration, vous pouvez avoir une capture d'écran du résultat de la page de splash et le vérifier ou simplement vérifier l'arbre du document si le prix est là. – jabargas

+0

oh, juste jeté un coup d'oeil à votre code, semble que votre xpath est faux. – jabargas

Répondre

2

Le problème est que le prix n'est pas présent du tout dans la sortie HTML rendue par Splash (mieux vaut voir votre URL dans la console Splash dans le navigateur Web sur le port 8050 et voir c'est rendu en sortie). Commencez par Splash FAQ lorsque la page n'est pas rendue correctement. Vous découvrirez que dans votre cas, la solution est de disable Private mode pour Splash, soit via l'option de démarrage --disable-private-mode pour Docker, ou en définissant splash.private_mode_enabled = false dans votre script LUA. Après avoir désactivé le mode privé, la page s'affiche correctement.

+0

Merci beaucoup Tomáš! ça a marché! – user6055239

0

utiliser ceci pour votre XPath - //*[contains(concat(" ", @class, " "), concat(" ", "_product-price", " "))]//span/text() ou simplement //*[contains(concat(" ", @class, " ")," _product-price "))]//span/text()

Xpath @ class = prédicats ne fonctionne pas pour plusieurs classes (classes séparées par un espace) comme celui que vous avez là. Pour obtenir l'élément, vous devez utiliser contains()

+0

J'ai essayé d'utiliser le xpath que vous avez spécifié ainsi sans aucune chance. Y a-t-il autre chose qui pourrait mal tourner? // * [contains (concat ("", @class, ""), concat ("", "_product-price", ""))] // span/text() – user6055239