2017-10-19 112 views
0

我正在學習scrapy(與飛濺)和建立一個蜘蛛來從js啓用頁面刮取結果。我的蜘蛛工作,並返回js頁面的結果。然而,它並沒有從這個鏈接https://www.zara.com/us/en/bejewelled-appliqu%C3%A9-dress-p07854034.html?v1=4818592&v2=733885Scrapy飛濺不返回結果

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

以上的XPath不會返回在瀏覽器中的結果,但是當通過scrapy調用不返回結果返回的價格。這是我的蜘蛛電話

yield scrapy.Request(url, callback=self.parse_page, dont_filter=True, meta={'splash': {'args': {'wait': 5,},'endpoint': 'render.html',}}) 

你能幫忙弄清楚爲什麼網站的價格沒有退回嗎?

謝謝!

+0

檢查是否是因爲您的代碼或配置,您可以從splash中獲取頁面結果的屏幕截圖並檢查它,或者只需檢查文檔樹是否存在價格。 – jabargas

+0

哦,只是看看你的代碼,看來你的xpath是錯誤的。 – jabargas

回答

2

問題是,價格是不存在的在飛濺呈現的HTML輸出(最好看到的是把你的網址在Splash控制檯上的Web瀏覽器8050端口,並看到它呈現輸出)。當頁面顯示不正確時,從Splash FAQ開始。你會發現,在你的情況下,解決方案是爲disable Private mode Splash,通過--disable-private-mode啓動選項爲Docker,或通過在您的LUA腳本中設置splash.private_mode_enabled = false。禁用私人模式後,頁面呈現正確。

+0

非常感謝Tomáš!工作! – user6055239

0

使用此爲您的XPath - //*[contains(concat(" ", @class, " "), concat(" ", "_product-price", " "))]//span/text()或者乾脆//*[contains(concat(" ", @class, " ")," _product-price "))]//span/text()

的XPath @類=謂詞不會爲多個類(用空格分隔類),如您有沒有一個工作。要獲取元素,你應該使用contains()

+0

我嘗試使用您指定的xpath,但沒有運氣。還有什麼可能會出錯的嗎? // * [contains(concat(「」,@class,「」),concat(「」,「_product-price」,「」))] // span/text() – user6055239