我想从下面的结构的html中提取文本。
selector = scrapy.Selector(text="""
<li>Text1
<ul>
<li>Text2</li>
<li>Text3</li>
</ul>
</li>
""")
下面的选项给予我所有的文本,包括新行,但失去了所有的html结构。
selector.xpath('/descendant-or-self::*/text()').extract()
selector.xpath('//li/text()').extract()
有没有一种方法可以通过某种路径访问这些元素呢?我希望能够通过类似下面的方法选择第一个文本(Text1),
selector.xpath('//li/text()').extract()
因为其余的(文本2和文本3)可以通过,
selector.xpath('//li/ul/li/text()').extract()
2条答案
按热度按时间chhqkbe11#
由于您的预期输出是什么并不清楚,因此假设您希望从顶部
li
标签和ul/li
标签中提取字符串/文本节点。下面的xpath表达式将从顶部li标记中选择文本
和
上面的路径表达式将从
ul/li
标记中选择文本P/S:我使用
re
模块仅用于删除多余白色由Scrapy Shell证明
baubqpgj2#
当你使用
Selector
时,你有两个选项来修复它:在路径中添加html和body标记
或者您可以使用相对xpath选择器
//