我需要在以下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']
答案 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]