我正在使用Scrapy构建一个简单的刮刀,但是在提取数据的某些部分时遇到了问题。该网站包含以下约20个代码块:
<div class="row result">
<div class="updateCont date col-md-2 col-sm-2 col-xs-3">
<span>
<strong>Fri. 10 Feb</strong> <br />0:00 AM
</span>
</div>
<div class="updateCont eventIcon col-md-1 col-sm-1 col-xs-3">
<div class="icon ">
<i class="fa fa-update"></i>
</div>
</div>
<div class="updateCont event col-md-9 col-sm-8 col-xs-6">
<span>
The buyer has been notified of this update. <br />
<span class="inner department">
124
</span>
</span>
</div>
</div>
我设法用以下方法提取每一个:
sel = Selector(text=response.body)
updates = sel.xpath("//div[@class='row result']")
我现在想隔离日期并将其转换为datetime对象以及updateCont事件字符串。 此次更新已通知购买。
我试过了:
for update in updates:
date = update.xpath('//span').extract()
print ( len(date) )
导致7.我期待它为3.更令人担忧的是,如果我打印出日期,它会打印出相同的数据三次。我期待三种不同的数据,因为html中有三种不同的数据。
是
sel = Selector(text=response.body)
updates = sel.xpath("//div[@class='row result']")
隔离这些部分的正确代码?什么是提取跨度的最佳方法?
答案 0 :(得分:-1)
In [19]: for update in updates:
...: spans = update.xpath('//span')
...: for span in spans:
...: text = span.xpath('normalize-space()').extract_first()
...: print(text)
...:
...:
出:
Fri. 10 Feb 0:00 AM
The buyer has been notified of this update. 124
124
使用.
将其隔离到当前节点