下面是HTML,我正在研究:
<div class="grdcpnsmllnks">
<ul>
<li><i class="fa fa-check-square"></i>Verified Offer</li>
<li><i class="fa fa-eye"></i><label id="ltveri276270">Offer used 1 hour ago</label></li>
<li><i class="fa fa-clock-o"></i>Valid till 31/12/2016</li>
</ul>
</div>
以下是我的代码段:
def parse_item(self, response):
endDate = response.xpath('//div[@class='grdcpnsmllnks']/ul/li/i[@class='fa-clock-o']::dd[1]/text()').extract()
yield {
'endDate': endDate
}
我希望选择有效期至2016年12月31日的文本。我在首先选择所需的<li>
标签时遇到问题,然后进一步选择任何标签中未包含的文本。请建议我如何使用xpath或css选择器。
答案 0 :(得分:0)
我通过检查包含 li
类属性的子i
元素的存在来找到fa-clock-o
元素,然后直接获取子text()
节点,然后使用.re_first()
方法提取日期:
In [1]: response.xpath("//div[@class='grdcpnsmllnks']//li[i[contains(@class, 'fa-clock-o')]]/text()").re_first(r"Valid till\s+(\d+/\d+/\d+)")
Out[1]: u'31/12/2016'