Python爬虫--xpath

简介: Python爬虫--xpath

xpath
1、xpath安装与使用
安装

安装lxml库
pip install lxml -i pip源
2、解析流程与使用
解析流程

实例化一个etree的对象,把即将被解析的页面源码加载到该对象
调用该对象的xpath方法结合着不同形式的xpath表达进行标签定位和数据提取
使用

  1. 导入lxml.etree

    from lxml import etree
    etree.parse()
    
  2. 解析本地html文件

    html_tree = etree.parse(‘XX.html’)
    etree.HTML()(建议)
    
  3. 解析网络的html字符串

    html_tree = etree.HTML(html字符串)
    html_tree.xpath()
    
  4. 使用xpath路径查询信息,返回一个列表

注意:如果lxml解析本地HTML文件报错可以安装如下添加参数

parser = etree.HTMLParser(encoding="utf-8")
selector = etree.parse('./lol_1.html',parser=parser)
result=etree.tostring(selector)

3、xpath语法
XPath 是一门在 XML 文档中查找信息的语言。XPath 用于在 XML 文档中通过元素和属性进行导航。

路径表达式
image.png
实例

在下面的表格中,我们已列出了一些路径表达式以及表达式的结果
image.png
谓语(Predicates)

  • 谓语用来查找某个特定的节点或者包含某个指定的值的节点。
  • 谓语被嵌在方括号中。

实例
在下面的表格中,我们列出了带有谓语的一些路径表达式,以及表达式的结果:
image.png
选取未知节点
XPath 通配符可用来选取未知的 XML 元素。
image.png
实例
在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:
image.png
选取若干路径

通过在路径表达式中使用“|”运算符,您可以选取若干个路径。

实例

在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:
image.png
逻辑运算
查找所有id属性等于head并且class属性等于s_down的div标签

//div[@id="head" and @class="s_down"]

选取文档中的所有 title 和 price 元素。

//title | //price

注意: “|”两边必须是完整的xpath路径

属性查询
查找所有包含id属性的div节点

//div[@id]

查找所有id属性等于maincontent的div标签

//div[@id="maincontent"]

查找所有的class属性

//@class
//@attrName
//li[@name="xx"]//text()  # 获取li标签name为xx的里面的文本内容

获取第几个标签 索引从1开始

tree.xpath('//li[1]/a/text()')  # 获取第一个
tree.xpath('//li[last()]/a/text()')  # 获取最后一个
tree.xpath('//li[last()-1]/a/text()')  # 获取倒数第二个

模糊查询
查询所有id属性中包含he的div标签

//div[contains(@id, "he")]

查询所有id属性中包以he开头的div标签

//div[starts-with(@id, "he")]

内容查询
查找所有div标签下的直接子节点h1的内容

//div/h1/text()

属性值获取

//div/a/@href   获取a里面的href属性值

获取所有

//*  #获取所有
//*[@class="xx"]  #获取所有class为xx的标签

获取节点内容转换成字符串

c = tree.xpath('//li/a')[0]
result=etree.tostring(c, encoding='utf-8')
print(result.decode('UTF-8'))
相关文章
|
17天前
|
数据采集 Web App开发 数据安全/隐私保护
实战:Python爬虫如何模拟登录与维持会话状态
实战:Python爬虫如何模拟登录与维持会话状态
|
2月前
|
数据采集 Web App开发 自然语言处理
新闻热点一目了然:Python爬虫数据可视化
新闻热点一目了然:Python爬虫数据可视化
|
1月前
|
数据采集 监控 数据库
Python异步编程实战:爬虫案例
🌟 蒋星熠Jaxonic,代码为舟的星际旅人。从回调地狱到async/await协程天堂,亲历Python异步编程演进。分享高性能爬虫、数据库异步操作、限流监控等实战经验,助你驾驭并发,在二进制星河中谱写极客诗篇。
Python异步编程实战:爬虫案例
|
2月前
|
数据采集 存储 XML
Python爬虫技术:从基础到实战的完整教程
最后强调: 父母法律法规限制下进行网络抓取活动; 不得侵犯他人版权隐私利益; 同时也要注意个人安全防止泄露敏感信息.
593 19
|
23天前
|
数据采集 存储 JSON
Python爬虫常见陷阱:Ajax动态生成内容的URL去重与数据拼接
Python爬虫常见陷阱:Ajax动态生成内容的URL去重与数据拼接
|
27天前
|
数据采集 存储 JavaScript
解析Python爬虫中的Cookies和Session管理
Cookies与Session是Python爬虫中实现状态保持的核心。Cookies由服务器发送、客户端存储,用于标识用户;Session则通过唯一ID在服务端记录会话信息。二者协同实现登录模拟与数据持久化。
|
2月前
|
数据采集 存储 Web App开发
处理Cookie和Session:让Python爬虫保持连贯的"身份"
处理Cookie和Session:让Python爬虫保持连贯的"身份"
|
2月前
|
数据采集 Web App开发 前端开发
处理动态Token:Python爬虫应对AJAX授权请求的策略
处理动态Token:Python爬虫应对AJAX授权请求的策略
|
2月前
|
数据采集 网络协议 API
协程+连接池:高并发Python爬虫的底层优化逻辑
协程+连接池:高并发Python爬虫的底层优化逻辑
|
2月前
|
数据采集 监控 Shell
无需Python:Shell脚本如何成为你的自动化爬虫引擎?
Shell脚本利用curl/wget发起请求,结合文本处理工具构建轻量级爬虫,支持并行加速、定时任务、增量抓取及分布式部署。通过随机UA、异常重试等优化提升稳定性,适用于日志监控、价格追踪等场景。相比Python,具备启动快、资源占用低的优势,适合嵌入式或老旧服务器环境,复杂任务可结合Python实现混合编程。

热门文章

最新文章

推荐镜像

更多