scrapy 提取多层嵌套标签下的所有文本

怎样才能一次性提取多层嵌套标签的所有文本,详细如下:

假如页面如下:

<p id='test'>hello<b>world!</b></p>
 
 

我要的提取结果是:world!(假设world是很多标签组合的文本)

这里就需要注意text()的使用了:

首先设置sel = Selector(text=doc, type='html')

如果text()前面使用一个反斜杠:sel.xpath("//p[@id='test']/text()").extract()

得到的结果是:[u'hello'],只能提取到其根标签下的文本,不能提取到子标签下的文本

方法一:

如果text()前面使用两个反斜杠:sel.xpath("//p[@id='test']//text()").extract()

这样提取出来的是一个列表,得到的结果是:[u'hello', u'world!']

然后再将列表循环拼接即可得到想要的结果:helloworld!。

根据自己的需要根据下标提取


方法二:

sel.xpath("//p[@id='test']").xpath('string(.)').extract()

结果是:['helloworld!'],是已经拼接好的,需要使用正则表达式来来获取到自己想要的结果


参考:http://www.cnblogs.com/qlshine/p/5926101.html

参考:https://blog.csdn.net/Y_321_123/article/details/81413010

### 回答1: XPath规则是一种用于在XML文档中定位元素和属性的语法规则。它使用路径表达式来描述文档结构中的节点,可以通过节点名称、属性、位置等方式进行定位。XPath规则通常以斜杠(/)开头,表示从文档根节点开始进行定位。例如,/bookstore/book[1]/title表示定位到第一个book节点的title节点。XPath规则还支持一些函数和运算符,可以进行更复杂的定位操作。 ### 回答2: XPath(XML Path Language)是一种用于在XML文档中定位元素的规则语言。以下是XPath规则的具体说明: 1. XPath使用路径表达式来定位元素。路径表达式由一系列的节点和操作符组成,用于描述元素的位置关系。 2. XPath使用/符号来表示元素之间的层级关系。例如,/bookstore/book表示bookstore元素下的所有book元素。 3. XPath使用//符号来表示在整个文档中查找元素。例如,//book表示在整个文档中查找所有book元素。 4. XPath使用[@属性名='属性值']来选择具有特定属性值的元素。例如,//book[@category='fiction']表示查找所有category属性值为fiction的book元素。 5. XPath使用[position()]来选择特定位置的元素。例如,//book[position()<3]表示查找前两个book元素。 6. XPath使用[text()]来选择指定文本内容的元素。例如,//book[text()='Harry Potter']表示查找文本内容为Harry Potter的book元素。 7. XPath使用逻辑运算符如and、or和not来组合多个条件。例如,//book[@category='fiction' and @price>10]表示查找category属性值为fiction且price属性大于10的book元素。 8. XPath还支持通配符来选择多个匹配模式的元素。例如,//book[contains(@title, 'XML')]表示查找title属性包含XML的book元素。 总之,XPath提供了丰富的定位和选择元素的规则,使得我们能够更加灵活和精确地在XML文档中定位所需的元素。 ### 回答3: XPath(XML Path Language)是一种用于在XML文档中定位元素的语言。XPath使用路径表达式来选择XML文档中的节点或节点集合。下面是一些XPath规则的具体说明: 1. 节点选择规则: - 路径表达式使用斜杠(/)表示从根节点开始进行路径选择。 - 双斜杠(//)表示选择所有符合条件的节点,不考虑位置。 - 单斜杠(/)表示选择当前节点的直接节点。 - 句点(.)表示当前节点。 - 句点两个点(..)表示选择当前节点的父节点。 2. 谓语规则: - 谓语用于对节点进行更精确的选择。它们由方括号([])包围。 - 谓语可以包含条件表达式,例如[@属性名称='属性值']用于选择具有指定属性和属性值的节点。 3. 节点类型规则: - XPath指定了不同类型的节点,如元素节点(element node)、属性节点(attribute node)、文本节点(text node)等。 - 使用节点类型来选择特定类型的节点,例如使用@符号选择属性节点。 4. 轴规则: - 轴用于沿着节点和文档树进行导航。 - 常用的轴有child、parent、ancestor、descendant等,它们用于相对于当前节点选择相关节点。 5. 通配符规则: - 通配符“*”用于匹配任意类型的节点。 - 通配符“@*”用于选择具有任意属性的节点。 XPath规则可以根据具体的需求进行组合和嵌套,以便更准确地选择和定位XML文档中的节点。在实际应用中,XPath非常有用,可以用于解析XML文档、提取特定数据和进行数据筛选等任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值