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