Python爬虫 XPath 三方库lxml

前言

XPath是Python爬虫最重要的过滤原始数据的手段之一,是爬虫最核心的技术

是专业抓取HTML页面而生的,基本上只用于抓取HTML页面使用

目录

安装支持XPath三方库lxml

XPath代码入门示例

XPath表达式语法

在源代码上面直接获取XPath


安装支持XPath三方库lxml

pip install lxml -i https://pypi.tuna.tsinghua.edu.cn/simple

XPath代码入门示例

from lxml import etreedata = "请求网页返回的源代码HTML数据"#使用 lxml 库中的 etree 模块使用XPath解析data数据
datas = etree.HTML(data)#返回的数据一般都是数据,即使是一个数据也是一个数组形式
res = datas.xpath('xpath表达式')#res这个数组里面的数据就是我们过滤好的目标数据
print(res)

XPath表达式语法

编写好的XPath表达式一般我们填入xpath()这个方法的适合习惯单引号,因为我们里面准备填写HTML里面的属性的时候我们习惯给双引号

XPath语法是按HTML页面的层级标签关系进行匹配的

 /                从根节点开始的绝对路径

//                匹配任意层级的节点

./                表示从当前节点开始的相对路径

HTML标签后面是可以跟坐标的,坐标是从1开始

        如 /html/body/p[1]/text()     

                就是使用绝对路径,从html标签根路径开始,html标签下的body标签下的第一个p标签的内容text()

        如//p[1]

                就是使用模糊匹配,匹配到HTML文件中的所有第一个P标签的内容text()

标签[@属性名="属性值"]                                     可以精确匹配具体的标签,确定好属性名和属性值的唯一性

标签[contains(@属性名,"属性值")]                       对属性值进行模糊匹配,可以匹配多个标签

                                                   

/@属性名            取这个标签该属性值

/text()                  取这个标签的内容

在源代码上面直接获取XPath

不推荐,不美观而且使用起来不够灵活

Python请求的HTML有可能是懒加载的,导致请求的HTML字符串与页面源代码不符,导致使用不了

所以还是尽量自己可以按照XPath表达式语法自己编写,实际问题实际分析

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/913273.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/913273.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习洪水推演:Python融合多源卫星数据可视化南方暴雨灾情

目录1. 引言:多源卫星融合分析的突破性价值2. 多模态融合架构设计3. 双流程对比分析3.1 单源 vs 多源融合分析3.2 洪水推演核心流程4. 核心代码实现4.1 多源数据融合处理(Python)4.2 时空洪水推演模型(PyTorch)4.3 三维…

「日拱一码」016 深度学习常用库——PyTorch

目录 张量操作 创建张量: torch.tensor() :直接从数据创建张量 torch.zeros() :创建全零张量 torch.ones() :创建全一张量 torch.randn() :创建正态分布随机张量 torch.arange() :创建等差序列张量 …

【Qt】QStringLiteral 介绍

QStringLiteral 介绍 QStringLiteral 是 Qt 框架中提供的一个宏,用于在编译时从字符串字面量创建 QString 对象,具有高效和零内存分配的特点。 主要特点 编译时转换:将字符串字面量在编译时转换为 QString 数据,而不是运行时。…

UI前端与数字孪生结合实践探索:智慧物流的货物追踪与配送优化

hello宝子们...我们是艾斯视觉擅长ui设计、前端开发、数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩!一、引言:数字孪生重构智慧物流的技术范式在物流行业数字化转型的浪潮中&#xff0…

Java创建型模式---工厂模式

工厂模式基础概念 工厂模式是一种创建型设计模式,其核心思想是将对象的创建和使用分离。通过使用工厂模式,可以将对象创建逻辑集中管理,提高代码的可维护性和可扩展性。在 Java 中,工厂模式主要分为三种类型: 简单工…

分布式定时任务:xxl-job

基础 XXL - Job采用的是调度中心(Scheduler)与执行器(Executor)分离的架构设计,这种设计带来了诸多优势,比如高可用性、可扩展性以及便于分布式部署等。 1. 调度中心(XXL - Job Admin&#xf…

易语言实现钉钉PC端高频率链接批量打开系统

易语言实现钉钉PC端高频率链接批量打开系统 一、需求分析与技术方案 核心需求: 在钉钉PC端私聊消息中嵌入特殊格式链接用户点击后通过自定义协议唤醒本地程序支持每分钟处理10万次请求的批量操作实现链接的批量生成和管理技术方案: #mermaid-svg-AYoMWYQQf71dlyEF {font-fa…

MyBatis如何实现动态数据源切换?

大家好,我是锋哥。今天分享关于【MyBatis如何实现动态数据源切换?】面试题。希望对大家有帮助; MyBatis如何实现动态数据源切换? 超硬核AI学习资料,现在永久免费了! 在MyBatis中实现动态数据源切换&#…

实践篇:14-构建 Node.js 应用程序镜像

背景介绍 Node.js是一个基于 Chrome V8 引擎的 JavaScript 运行时环境,以其事件驱动、非阻塞 I/O 模型而闻名,广泛用于构建后端服务和前端应用。 Node.js 的特点使其非常适合容器化部署: 轻量级运行时:相比传统后端语言&#xf…

Spring Cloud 微服务(链路追踪与日志聚合)

📌 摘要 在微服务架构中,随着服务数量的增加和调用关系的复杂化,传统的日志记录方式已经无法满足对系统运行状态的全面掌控。如何快速定位异常请求、分析服务调用耗时、追踪完整链路成为运维和开发人员面临的核心挑战。 为此,Sp…

PADS交互式布局

PADS的交互式布局通过原理图与PCB的双向联动大幅提升设计效率。在原理图中框选电路模块时,PCB视图将自动高亮对应元件组并生成可移动簇,拖动时保持模块内部相对位置不变。布局过程中启用实时推挤功能(Placement Shoving)&#xff…

类图+案例+代码详解:软件设计模式----原型模式

5、原型模式 通过复制现有对象来创建新对象,避免从零开始构建,就像 “复印文件” 一样。 克隆的核心是复用现有对象状态 用 克隆熊猫 举例,秒懂原理 假设你有一只熊猫对象(属性:名字、年龄、毛色)&#…

Python-FAQ-__name__、__main__

1 需求 2 接口 3 示例 4 参考资料 在 Python 中,像 __name__ 这样的双下划线属性(也称为 "dunder" 属性,即 "double underscore" 的缩写)是 Python 的特殊属性或方法,它们为类、对象或模块提供了…

Adobe高阶技巧与设计师创意思维的进阶指南

作为一名在全球设计圈摸爬滚打了十年的职业设计师,我深知创意与技术的结合是点燃灵感的火花。凭借英国Parvis School of Economics and Music大学提供的Adobe正版教育订阅,我得以在设计之路上不断探索与突破。今天,我想以轻松实用的口吻&…

音视频会议服务搭建(设计方案-Go服务端API业务逻辑流程图)-04

前言 这一篇是 关于 Go服务端相关的音视频会议的接口API业务逻辑流程图肯定是不能完全复用到你的项目中去的,但是希望对你有一些参考性的帮助嗯,我也是在不断的进行完善和优化,并不是最终的结构,先定好大方向,然后不断…

C++ Qt Widget绘图画布缩放与平移:实现CAD级交互体验

在图形应用程序开发中,实现流畅的缩放和平移功能是创建专业级绘图工具的基础。本文将深入探讨如何在Qt Widget中实现CAD级别的交互体验,包括视图变换、坐标系统管理以及交互功能实现。核心概念:视图变换与坐标系统 在图形应用中,我…

Paimon 位图索引解析:高效等值查询的秘密( Bit-Sliced Index)

BitmapFileIndexBitmapFileIndex 这个类 是 Paimon 中一个非常重要的索引类型,它使用位图(Bitmap)来精确定位数据,尤其擅长处理低基数(low-cardinality)列的等值查询。BitmapFileIndex 实现了 FileIndexer …

S7-1200 CPU 与 S7-200 CPU S7通信(S7-1200 作为服务器

7-1200 CPU 与 S7-200 CPU S7通信(S7-1200 作为服务器) S7-1200 CPU 与 S7-200 CPU 之间的通信只能通过 S7 通信来实现,因为 S7-200 的以太网模块只支持S7 通信。当S7-200作为客户端,S7-1200作为服务器,需在客户端单边…

pyspark大规模数据加解密优化实践

假如有1亿行数据 方法1 spark udf解密 from pyspark.sql import SparkSession import pyspark.sql.functions as F from pyDes import * import binasciisparkSparkSession.builder.getOrCreate()def dec_fun(text):key triple_des(b"HHHHHHHHHHHHHHHHHHHHHHHH", CB…

华为云Flexus+DeepSeek征文|华为云ECS与CCE:从介绍到架构部署·仅需要此文足矣

前引:当今的企业面临着前所未有的技术挑战:如何构建既安全又高效、既灵活又可靠的云服务架构?如何有效整合人工智能技术,打造智能化的运维和服务体系?这些问题的答案,正在悄然改变着企业级IT基础设施的生态…