IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 04爬虫-xpath节点以及语法 -> 正文阅读

[JavaScript知识库]04爬虫-xpath节点以及语法

xpath定位节点以及提取属性或文本内容的语法

表达式描述
nodename选中该元素。
/从根节点选取、或者是元素和元素间的过渡。
//从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
.选取当前节点。
. .选取当前节点的父节点。
@选取属性。
text()选取文本。

/:类似于绝对路径查找,/html/head/title

//:直接在当前节点下的所有节点中进行查找,类似于之前的jsonpath,/html//title//title,在根节点下只需找title

xpath节点选择语法

html
/html/head/title
html//title
//title
//title/../..//title
斜杠隔开的是节点

//title/text() 从开闭标签之间取文本内容

//link/@href 去link标签中,href属性中的内容链接
在这里插入图片描述

节点修饰语法

1.通过索引修饰节点

/html/body/div[3]/div/div[1]/div 选择body标签下第三个div下的div下的第一个div下的所有div

/html/body/div[3]/div/div[1]/div[last()] 选择body标签下第三个div下的div下的第一个div下的最后一个div

/html/body/div[3]/div/div[1]/div[last()-1] 选择body标签下第三个div下的div下的第一个div下的倒数第二个div

/html/body/div[3]/div/div[1]/div[position()>10] 选择body标签下第三个div下的div下的第一个div下除了前十个div剩下的其它div

2.根据属性值修饰节点

//div[@id="content-left"]/div/@id 在所有div中选择属性值id="content-left"的div,然后在它下面选择所有div并获取它们的id属性中的值

在这里插入图片描述
3.通过子节点的值修饰节点
//span[i>2000] 选择所有span标签中的i标签里的值大于2000的span标签

//div[span[2]>=9.4] 选择所有div标签中的第二个span标签里的值大于等于9.4的div标签

4.通过包含修饰
类似于模糊查询

//div[contains(@id,"qiushi_tag_")] 选择所有div中含有id属性,并且id的属性值包含字符串“qiushi_tag_”的所有div

//span[contains(text(),"下一页")] 选择所有span标签中,标签里面的值包含字符串“下一页“的所有span标签

//h2/a|//td/a xpath复合使用语法

xpath使用例子

 from lxml import etree
  text = ''' 
<div> 
  <ul> 
    <li class="item-1">
      <a href="link1.html">first item</a>
    </li> 
    <li class="item-1">
      <a href="link2.html">second item</a>
    </li> 
    <li class="item-inactive">
      <a href="link3.html">third item</a>
    </li> 
    <li class="item-1">
      <a href="link4.html">fourth item</a>
    </li> 
    <li class="item-0">
      a href="link5.html">fifth item</a>
  </ul> 
</div>'''
  
  #根据li标签进行分组
  #将字符串转换为element对象
  html = etree.HTML(text)
  #查找所有li标签中参数class值为"item-1"的li的element对象,赋值给li_list列表,因为xpth返回的是一个列表
  li_list = html.xpath("//li[@class='item-1']")
  
  #在每一组中继续进行数据的提取
  for li in li_list:
  	  #设置一个空列表
      item = {}
      
      #进行条件判断,如果li标签下a标签的参数href的值长度大于0,就将href的内容赋值给item列表中的href,否则就赋值空
      item["href"] = li.xpath("./a/@href")[0] if len(li.xpath("./a/@href"))>0 else None
      
      #进行条件判断,如果li标签下a标签的内容大于0,就将a标签的内容赋值给item列表中的title,否则就赋值空
      item["title"] = li.xpath("./a/text()")[0] if len(li.xpath("./a/text()"))>0 else None
      print(item)
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 11:09:15  更:2022-05-05 11:13:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 23:36:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码