Scrapy -- scrappy未能从HTML标签返回信息
我正在尝试抓取一个网站的数据,使用的是 scrapy 这个工具。但是当我抓取网页的 HTML 数据时,我需要的那个 HTML 标签没有返回任何数据。
这个网站是("http://www.exito.com/products/0000293501259261/Arroz+Fortificado?cid=&page="),这是我正在抓取的 HTML 部分。
<div class="pdpInfoProductPrice">
<meta itemprop="currency" content="COP">
<h4 itemprop="price" class="price">
$5.350</h4>
</div>
我需要使用 scrapy 从 h4 标签中获取价格,但在抓取时只得到这个类是空的,里面没有任何标签。这本应该是件简单的事情,但我就是无法以任何方式获取到价格。
我在页面上使用了一些 xpath 来获取价格。
sel.xpath('[@id="plpContent"]/div[3]/div[5]/h4').extract()
sel.xpath('//*[@id="atg_store_two_column_main"]/div[2]').extract()
//*[@id="mainWhiteContent"]/div[2]/div[1]/div[1]/div[1]/div[3]/div[1]/div/h4
2 个回答
0
试试这个 xpath:
sel.xpath("//div[@id='mainWhite']/div[@id='mainWhiteContent']/div[@class='row-fluid'][2]/div[@class='span9 widthCarulla']/div[@class='row-fluid']/div[@class='pdpProduct span12']/div[@class='pdpInfoProduct pull-left']/div[@class='pdpInfoProductPrices']/div[@class='pdpInfoProductPrice']/h4[@class='priceOffer']/text()").extract()
0
在第一次请求时,网页会询问你的地区,并把这个信息存储在一个叫做cookie的小文件里。
你可以通过删除cookie或者使用其他浏览器/隐私浏览模式来重现这个情况。
如果想要解决这个问题,你需要发送一个名为 selectedCity
的cookie,并且带上一个地区代码,比如 AR
。在创建请求时可以用类似下面的方式:
request = Request(
url="http://www.exito.com/products/0000293501259261/Arroz+Fortificado?cid=&page=",
cookies={'selectedCity': 'AR'}
)
对于XPath表达式,我建议使用
//div[@class='pdpInfoProductPrice']/h4[@itemprop='price']/text()
另外,也可以参考这个关于匹配HTML类的回答: 使用XPath选择CSS类。