Scrapy -- scrappy未能从HTML标签返回信息

0 投票
2 回答
558 浏览
提问于 2025-04-18 03:48

我正在尝试抓取一个网站的数据,使用的是 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类

撰写回答