首页 > 其他分享 >xpath解析

xpath解析

时间:2023-05-26 18:13:02浏览次数:41  
标签:xpath etree 标签 tree div 解析 class

  1.环境安装

pip install lxml

2.解析原理

2.1实例化一个etree的对象,且将待解析的页面源码数据加载到该对象中

2.2调用etree对象的xpath方法结合着不同的xpath表达式实现标签的定位和数据提取

3.实例化etree对象

etree.parse('filename'):将本地html文档加载到该对象中

etree.HTML(page_text):网站获取的页面数据加载到该对象

4.标签定位

from lxml import etree

tree = etree.parse('test.html')

最左侧的/:如果xpath表达式最左侧是以/开头啧表示该xpath表达式一定要从跟标签开始定位标签

非最左侧的/:表示一个层级

非最左侧的//:表示多个层级

最左侧的//:xpath表达式可以从任意位置进行标签定位

#都定位meta
tree.xpath('html/head/meta')
tree.xpath('html//meta')
tree.xpath('//meta')

属性定位:tagName[@attrName='value']

#定位class位为song的div下面所有的p标签
tree.xpath('//div[@class='song']/p')

索引定位:tag.[index]:索引是从1开始的

#定位class位为song的div下面第一个的p标签
tree.xpath('//div[@class='song']/p[1]')

模糊匹配

//div.[contains(@class,"ng")]  # 匹配class包含ng

5.取文本

/text:直系文本内容

//text:所有文本内容

#定位class位为song的div下面第一个的p标签下所有文本内容
tree.xpath('//div[@class='song']/p[1]//text()')

6.取属性

/attrName

tree.xpath('//a[@id="geng"/href]')  # 取a标签下id等于geng的href

 

标签:xpath,etree,标签,tree,div,解析,class
From: https://www.cnblogs.com/xiongying4/p/17435222.html

相关文章

  • Java大文件分片上传/多线程上传实例解析
    ​ javaweb上传文件上传文件的jsp中的部分上传文件同样可以使用form表单向后端发请求,也可以使用ajax向后端发请求    1. 通过form表单向后端发送请求         <formid="postForm" action="${pageContext.request.contextPath}/UploadServlet" method="pos......
  • Unity中的InitializeOnLoad特性:深入解析与实践
    Unity中的InitializeOnLoad特性:深入解析与实践在Unity开发过程中,我们经常需要在编辑器启动时或脚本重新编译后执行一些操作,例如初始化数据、注册事件等。这时,我们可以使用InitializeOnLoad特性来实现这一需求。本文将详细介绍InitializeOnLoad特性的用法,并通过三个实际案例来展示其......
  • 深度解析线程的正确停止方法
    深度解析线程的正确停止方法一、解惑1.什么情况下,线程需要被停止?线程和任务被创建和启动之后,大部分情况下都是自然运行到结束的,自然停止,但有些情况会需要用到停止线程,如:用户主动取消服务被快速关闭运行出错或超时情况下等线程都需要被停止这些情况都需要主动来......
  • 深度解析 slab 内存池回收内存以及销毁全流程
    在上篇文章《深入理解slabcache内存分配全链路实现》中,笔者详细地为大家介绍了slabcache进行内存分配的整个链路实现,本文我们就来到了slabcache最后的一部分内容了,当申请的内存使用完毕之后,下面就该释放内存了。在接下来的内容中,笔者为大家介绍一下内核是如何将内存......
  • 【❧消息队列】解析 RocketMQ 业务消息——“事务消息”
    在分布式系统调用场景中存在这样一个通用问题,即在执行一个核心业务逻辑的同时,还需要调用多个下游做业务处理,而且要求多个下游业务和当前核心业务必须同时成功或者同时失败,进而避免部分成功和失败的不一致情况出现。简单来说,消息队列中的“事务”,主要解决的是消息生产者和消费者的......
  • 浅谈DNS域名解析的过程
    一、用户在浏览器输入www.baidu.com时,DNS域名解析大致分为以下几个过程:1、浏览器客户端检查自身有没有该域名的缓存:如果浏览器有命中,直接返回该域名对应的IP地址,解析结束;(这个缓存可以设置TTL来控制有效时间,有点像APR协议在本地保存的的目的IP与主机MAC地址的缓存)如下图:如果浏......
  • 淘宝API技术文档解析,从入门到实战
    探索淘宝数据的奥秘,淘宝是目前国内最大的B2C电商平台之一,每天都会产生海量的数据。借助淘宝API技术文档,我们可以轻松地获取到这些数据,从而为电商运营和数据分析提供有力支持。1.什么是淘宝API?淘宝API(ApplicationProgrammingInterface)是一组软件API接口,可以让第三方应用程序和淘宝......
  • Spring Web URL 解析常见错误
    案例1:当@PathVariable遇到/在解析一个URL时,我们经常会使用@PathVariable这个注解。例如我们会经常见到如下风格的代码:(https://www.java567.com,搜"spring") @RestController @Slf4j publicclassHelloWorldController{  @RequestMapping(path="/hi1/{name}",......
  • 从领英退出中国,解析融云《社交泛娱乐出海作战地图》从0到1出海方法论
    近期,“领英职场”宣布将于2023年8月9日起正式停止服务。移步【融云全球互联网通信云】回复“地图”免费领一时之间,网友纷纷送上祭文。有人觉得猝不及防,但更多人直言并不意外。领英在中国的折戟终局,似乎从2021年改版就提前预定了。彼时,领英中国砍掉了堪称其吸引用户杀手锏的......
  • Nginx如何配置多个服务域名解析共用80端口详解
    前言由于公司一台服务器同时有多个服务,这些服务通过域名解析都希望监听80/443端口直接通过域名访问,比如有demo.test.com和product.test.com。这时候我们可以使用nginx的代理转发功能帮我们实现共用80/443端口的需求。备注:由于HTTP协议默认监听80端口,HTTPS协议默认监听443端口,所......