Scrapy:仅选择带有xpath文本内容的<p>元素

时间:2016-02-15 11:26:46

标签: python xpath scrapy

我只想选择<p></p>里面有一些文字。用xpath做到最好的是什么?

Html示例:

    <div id="date" >
            <span > Some date</span>
            <p></p>
    </div>
        <div id="date" >
            <span >Some date</span>
            <p>10:00</p>
    </div>

Xpath的

item['StartTime'] = response.xpath('//*[@id="date"]/p/text()').extract()

2 个答案:

答案 0 :(得分:4)

如何使用此XPath:

//*[@id="date"]/p[normalize-space()]/text()

表达式p[normalize-space()]将返回包含非空文本的p元素。

答案 1 :(得分:2)

试试这个:

date = response.xpath('//div[@id="date"]')
for d in date:
    ptext = d.xpath('p/text()').extract()
    if ptext:
       item['StartTime'] = ptext