Xpath没有提取它应该提取的内容

2024-04-25 19:08:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Scrapy解析一个网站。这是一个产品link。你知道吗

我试图提取产品价格的XPath是:

sel.xpath ('//div[@class="product-price"]/input/div[@id="product_price"]/text()').extract()
sel.xpath ('//div[@id="product_price"]/text()').extract()
sel.xpath ('//div[@class="product-size-qua-info"]/div[@class="product-price"]/input/div[@id="product_price"]/text()').extract()
sel.xpath ('//div[@class="product-size-qua-info"]/div/input/div[@id="product_price"]/text()').extract()
sel.xpath ('//div[@class="product-size-qua-info"]/div/input/div/text()').extract()
sel.xpath ('//div[@class="product-size-qua-info"]/div/div/text()').extract()
sel.xpath ('//div[@class="product-size-qua-info"]/div//div/text()').extract()
sel.xpath ('//div[@class="product-size-qua-info"]/div[2]/text()').extract()
sel.xpath ('//div[@class="product-size-qua-info"]/div[2]//text()').extract()
sel.xpath ('//div[@id="product_price"]//text()').extract()

他们都不工作。有些只是随机的尝试。你知道吗

url中提取产品价格的正确xpath是什么。?你知道吗


Tags: textdivinfoidinputsizeextractproduct
2条回答

从外观上看,定价总是包含在id=product\u price的单个div中。你知道吗

它看起来也写得很好,在产品页面上没有重复的id=product\u price

因此,您只需使用:

//div[@id='product_price']/text()

你试过的时候发生了什么选择xpath('//div[@id=“product\u price”]/text()').extract()?这应该是正确的模式,唯一的区别是我切换了单引号和双引号。你知道吗

这似乎是一个微不足道的变化,但请尝试:

sel.xpath ("//div[@id='product_price']/text()").extract()

这里的问题是价格和大小由javascript函数检索。这就解释了为什么在响应中看不到它,而在浏览器的DOM中看到它。这不是一个具体的问题。你知道吗

由于该网站严重依赖javascript,因此请浏览页面代码源代码,而不是使用firebug或chrome开发工具检查元素。虽然用scrapy解析这个网站是完全可行的(而且效率更高),但是您可以使用支持javascript的Selenium。你知道吗

要获得价格和大小,您必须执行两个额外的POST请求
http://www.goodearth.in/Wishlist.ashx,具有以下参数:

尺寸: ACTION=CheckInventoryforSizes&;ProductID=2060&;VariantID=2060&;Sizes=&;ChosenColor=FFFFFF-Multi&;isProductDetails=true

价格: ACTION=GetProductPrice&;ProductID=2060&;VariantID=2060&;ChosenSize=&;ChosenColor=FFFFFF-Multi&;View=productdetail

相关问题 更多 >