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

时间:2014-07-16 10:01:18

标签: python xpath scrapy

我正在使用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是什么。

2 个答案:

答案 0 :(得分:1)

这里的问题是价格和尺寸是通过javascript函数检索的。这就解释了为什么你没有在响应中看到它,但你在浏览器的DOM中看到它。这不是特定于scrapy的问题。

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

要获得价格和尺寸,您必须再执行两次POST请求 http://www.goodearth.in/Wishlist.ashx,包含以下参数:

尺寸: ACTION = CheckInventoryforSizes&安培;的ProductID = 2060&安培; VariantID = 2060&安培;大小=安培; ChosenColor = FFFFFF-多&安培; isProductDetails =真

价: ACTION = GetProductPrice&安培;的ProductID = 2060&安培; VariantID = 2060&安培; ChosenSize =安培; ChosenColor = FFFFFF-多&安培;查看=产品详情

答案 1 :(得分:0)

从表面上看,定价总是包含在id为= product_price的单个div中。

它的外观也很好,因为产品页面上没有重复的id = product_price

因此,您只需使用:

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

当您尝试使用sel.xpath('// div [@id =“product_price”] / text()')。extract()时发生了什么?这应该是正确的模式,唯一的区别是我改变了我的单身&双引号。

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

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