zoukankan      html  css  js  c++  java
  • 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路径
    

      

  • 相关阅读:
    JSON、JSONObject、JavaBean三者的相互转换
    Redis下载安装及设置密码
    Git撤销已经提交的 commit
    SpringBoot文件上传、删除及下载
    JavaScript 获取当前系统时间(精确到天)
    Python搭建简易HTTP服务(3.x版本和2.x版本的)
    20151017第一天
    js知识点: 数组
    jQuery事件委托方法 bind live delegate on
    数组去重的方法
  • 原文地址:https://www.cnblogs.com/liangzp/p/9158623.html
Copyright © 2011-2022 走看看