Xpath轴与步长应用:取某节点下所有子孙节点里的文本内容
Posted liangzp
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Xpath轴与步长应用:取某节点下所有子孙节点里的文本内容相关的知识,希望对你有一定的参考价值。
最近遇到个需求,需要爬一些数据使用,写好了爬虫后爬到了一段html,然后用lxml解析,接下来就是定位到具体节点提取内容。遇到了一个问题,想要提取的内容在一个class名为full-content的<div>中,文本内容有可能就在div中,可有可能在子孙节点中,那怎么全部提取呢?查了一下Xpath有轴与步长的用法,
详细用法参考:http://www.w3school.com.cn/xpath/xpath_axes.asp
轴名称 | 结果 |
---|---|
ancestor | 选取当前节点的所有先辈(父、祖父等)。 |
ancestor-or-self | 选取当前节点的所有先辈(父、祖父等)以及当前节点本身。 |
attribute | 选取当前节点的所有属性。 |
child | 选取当前节点的所有子元素。 |
descendant | 选取当前节点的所有后代元素(子、孙等)。 |
descendant-or-self | 选取当前节点的所有后代元素(子、孙等)以及当前节点本身。 |
following | 选取文档中当前节点的结束标签之后的所有节点。 |
namespace | 选取当前节点的所有命名空间节点。 |
parent | 选取当前节点的父节点。 |
preceding | 选取文档中当前节点的开始标签之前的所有节点。 |
preceding-sibling | 选取当前节点之前的所有同级节点。 |
self | 选取当前节点。 |
因此:用以下Xpath表达式解决了问题。
"//div[@class="full-content"]/descendant::text()"
方法二:
Xpath选取多个路径也可以用以下方式实现:
A路径|B路径
以上是关于Xpath轴与步长应用:取某节点下所有子孙节点里的文本内容的主要内容,如果未能解决你的问题,请参考以下文章