从Scrapy中的xpath选择器中删除div的跨度

时间:2016-08-08 05:25:10

标签: xpath scrapy

我需要在以下html中仅提取19.10值,但我的xpath不起作用。提前谢谢。

<div class="class1">19.10
        <span class="class2"><br></span>
</div>

Xpath:

//div[@class='class1'][not(preceding::span[@class='class2'])]/text()

结果:

[u'19.10\n\t\t\t\t\t\t\t', u'\n\t\t\t\t\t\t']

2 个答案:

答案 0 :(得分:1)

您想在此处获取第一个文本元素。这样做的方法很少。使用xpath:

"/div[@class='class1'][not(preceding::span[@class='class2'])]/text()[1]"

或后处理:

# just first element
response.xpath("xpath").extract_first()

或者如果您熟悉项目加载器:

from scrapy.loader.processors import TakeFirst
from scrapy.loader import ItemLoader
class MyItemLoader(ItemLoader):
    myfield_out = TakeFirst()
ml = MyItemLoader()
ml.add_xpath('myfield', 'xpath')

答案 1 :(得分:1)

尝试以下xPath: -

string(//div[@class='class1'])

(//div[@class='class1']/text())[1]
相关问题