Python爬虫---解析---xpath

news2024/9/24 7:21:43

1.1  安装xpath: 点击安装Xpath 

1.2  将安装好的程序解压,打开浏览器,找到程序扩展,把解压好的程序托进来,如下图所示:

1.3  设置快捷键:打开/关闭xpath

1.4  成功后的图例:按刚刚设置的快捷键 ctrl+shift+x

使用例子 : 在QUERY里输入xpath语法(下文有讲解),RESULTS (1)可以校验是否正确

 

2.1 安装 lxml 库:pip install lxml -i https://pypi.douban.com/simple 

注意:需要安装在python解释器相同的位置

2.2  导入:from lxml import etree

2.3  使用

1.路查询:   1)//: 查找所有子孙节点,不考虑层级关系  2) / : 找直接子节点
2.谓词查询: 1)//div[@id]   2)//div[@id="idname"]
3.属性查询: 1)//@class
4.模糊查询: 1)//div[contains(@id,"he")]   2)//div[starts-with(@id,"he")] I
5.内容查询: 1)//div/h1/text()
6.逻辑运算   1)//div[@id="idname”and @class="classname"] 与  2)//title| //price  或

1)xpath解析本地文件    # etree.parse("xx.html)
2)xpath解析服务器响应的数据  # etree.HTML(response.read().decode("utf-8))

from lxml import etree

# xpath解析
# 1)本地文件    # etree.parse("xx.html)
# 2)服务器响应的数据 response.read().decode("utf-8")  # etree.HTML(response.read().decode("utf-8))

# xpath解析本地文件
tree = etree.parse("1218-解析-xpath的基本使用.html")
print(tree)

# xpath基本语法:tree.xpath("xpath路径")
li_list = tree.xpath("//ul/li")  # 查找ul下面的li  子节点
li_list1 = tree.xpath("//body//li")  # 查找body下面的li  子孙节点
li_list2 = tree.xpath("//ul/li[@id]")  # 查找所有有id的属性的li标签
li_list3 = tree.xpath("//ul/li[@id]/text()")  # 查找所有有id的属性的li标签文本
li_list4 = tree.xpath("//ul/li[@id='l1']/text()")  # 查找所有有id为l1的属性的li标签文本
li_list5 = tree.xpath("//ul/li[@id='l1']/@class")  # 查找到id为l1的li标签的class的属性值
li_list6 = tree.xpath("//ul/li[contains(@id,'l')]/text()")  # 查询包含l的li标签
li_list7 = tree.xpath("//ul/li[starts-with(@id,'l')]/text()")  # 查询id的值以l开头的li标签
li_list8 = tree.xpath("//ul/li[@id='l1' and @class='c1']/text()")    # 查询id为l1和class为c1的标签
li_list9 = tree.xpath("//ul/li[@id='l1']/text() | //ul/li[@id='l2']/text()")  # 查询id为l1或id为l2的标签
# li_list9 = tree.xpath("//ul/li[@id='l1' | @id='l2']/text()")   # 不能这样写
print(li_list9)

# 判断列表的长度
print(len(li_list))

html文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8"/>
    <title>Document</title>
</head>
<body>
    <ul>
        <li id="l1" class="c1">北京</li>
        <li id="l2">上海</li>
        <li id="c3">深圳</li>
        <li id="c4">武汉</li>
    </ul>
    <ul>
        <li>大连</li>
        <li>锦州</li>
        <li>沈阳</li>
    </ul>
</body>
</html>

例子:获取百度网站的 “百度一下” 四个字

注:xpath的返回值是一个列表类型的数据

# 1)获取网页的源码
# 2)解析服务器响应的文件
# 3)打印

import urllib.request
from lxml import etree

url = "https://www.baidu.com"

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}
# 请求对象的定制
request = urllib.request.Request(url=url,headers=headers)
# 模拟浏览器向服务器发起请求
response = urllib.request.urlopen(request)
# 获取响应数据
content = response.read().decode("utf-8")
# print(content)

# 解析网页源码,获取数据

# 解析服务器响应的文件
tree = etree.HTML(content)

# 获取想要的数据  xpath的返回值是一个列表类型的数据
result= tree.xpath("//input[@id='su']/@value")[0]
print(result)   # 百度一下

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

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

相关文章

web前端游戏项目-雷霆战机飞机大战游戏【附源码】

文章目录 一&#xff1a;雷霆战机HTML源码&#xff1a;JS文件&#xff1a;&#xff08;1&#xff09;function.js&#xff08;2&#xff09;impact.js&#xff08;3&#xff09;move.1.1.js&#xff08;4&#xff09;script.js 二&#xff1a;飞机大战HTML源码&#xff1a;CSS源…

文件操作入门指南

目录 一、为什么使用文件 二、什么是文件 2.1 程序文件 2.2 数据文件 2.3 文件名 三、文件的打开和关闭 3.1 文件指针 3.2 文件的打开和关闭 四、文件的顺序读写 ​编辑 &#x1f33b;深入理解 “流”&#xff1a; &#x1f342;文件的顺序读写函数介绍&#xff1a; …

池化层(pooling)

目录 一、池化层 1、最大池化层 2、平均池化层 3、总结 二、代码实现 1、最大池化与平均池化 2、填充和步幅(padding和strides) 3、多个通道 4、总结 一、池化层 1、最大池化层 2、平均池化层 3、总结 池化层返回窗口中最大或平均值环节卷积层对位置的敏感性同样有窗口…

【SpringBoot快速入门】(2)SpringBoot的配置文件与配置方式详细讲解

之前我们已经学习的Spring、SpringMVC、Mabatis、Maven&#xff0c;详细讲解了Spring、SpringMVC、Mabatis整合SSM的方案和案例&#xff0c;上一节我们学习了SpringBoot的开发步骤、工程构建方法以及工程的快速启动&#xff0c;从这一节开始&#xff0c;我们开始学习SpringBoot…

【JAVA】重力反弹,反弹高次一次比一次低

本来是想实现泡泡屏保(javascript实现漂亮的气泡碰撞效果(Chrome浏览器下更佳) 下载-脚本之家)的&#xff0c;还未实现 import javax.swing.*; import java.awt.*; import java.util.LinkedList; import java.util.Random;class Bubble {public static Image image;public int…

Zoho Mail:1600万企业用户的信赖之选

Zoho Mail和Workplace在线办公套件一起&#xff0c;已经成长为一个集邮箱、即时通讯、生产力工具于一身的非常全面的强大平台。经过数十年持续深入的研发投入&#xff0c;我们的产品可以很好地服务大型企业。 这是Zoho创始人斯瑞达•温布在Zoho Mail15周年之际发布的感想。 过去…

C语言——内存函数的使用与模拟实现

大家好&#xff0c;我是残念&#xff0c;希望在你看完之后&#xff0c;能对你有所帮助&#xff0c;有什么不足请指正&#xff01;共同学习交流 本文由&#xff1a;残念ing 原创CSDN首发&#xff0c;如需要转载请通知 个人主页&#xff1a;残念ing-CSDN博客&#xff0c;欢迎各位…

Linux:控制用户的密码—(有效期下次登录必须修改密码)

设置密码有效期 办法1 chage -M 天数 用户名 passwd -x 天数 用户名 可以看到a1 设置了10天 a2 100天 a3没有被设置就是99999 办法2 编辑/etc/login.defs vim /etc/login.defs 设置今后添加用户时的默认密码有效期&#xff0c;也就是新建的用户密码有效期 修改里面的 PASS_…

九.数据处理之增删改

数据处理之增删改 1.插入数据1.1实际问题1.2方式1&#xff1a;VALUES的方式添加1.3方式2&#xff1a;将查询结果插入到表中 2.更新数据3.删除数据4.MySQL8新特性&#xff1a;计算列5.综合案例 1.插入数据 1.1实际问题 解决方式&#xff1a;使用INSERT语句向表中插入数据 1.2方…

LEFT JOIN

通過中間表説明 biz_email_sent table1 biz_email table2 biz_email_sent_address 中間表 LEFT JOIN 是 JOIN 左邊的記錄(biz_email_sent id52)全部查出&#xff0c;比如52 的記錄全部查出。 即使中間表se.sa_email_id 在 table2中找不到&#xff0c…

打破枯燥工作日,用Python统计键盘和鼠标点击次数,钉钉告诉你今天摸鱼了多少次!

1 前言 是否曾想过&#xff0c;在一天的工作中&#xff0c;你到底点击了键盘多少次&#xff0c;或者鼠标点击了多少下&#xff1f; 是否好奇每天工作的时候&#xff0c;自己究竟有多努力&#xff1f; 本文将带你使用 Python&#xff0c;利用 pynput 监听键盘和鼠标事件&…

mysql原理--连接的原理

1.连接简介 1.1.连接的本质 为了故事的顺利发展&#xff0c;我们先建立两个简单的表并给它们填充一点数据&#xff1a; mysql> CREATE TABLE t1 (m1 int, n1 char(1)); mysql> CREATE TABLE t2 (m2 int, n2 char(1)); mysql> INSERT INTO t1 VALUES(1, a), (2, b), (…

2023年12月20日雄县采样

刚去的时候&#xff0c;找不着冬小麦地&#xff0c;因为积雪太厚了&#xff0c;小麦都被埋住了。 翻了几波地失败了几个点&#xff0c;也渐渐得出经验了&#xff0c;像下图这种有田垄的大块连成片农田&#xff0c;“高标准”农田。一定是种植小麦的。 刨开土能看到小麦就和挖到…

图片曝光修正方法(直方图均衡和CNN)

图像过曝或曝光不足时需要曝光处理&#xff0c; 这里以曝光不足举例。 直方图均衡法&#xff1a; 通过RGB通道的直方图均衡达到处理曝光不足的效果。 代码&#xff1a; underexpose cv2.imread("exposure_test.jpg") #underexpose cv2.cvtColor(underexpose, cv2…

软件设计模式:UML类图

文章目录 前言一、&#x1f4d6;设计模式概述1.软件设计模式的产生背景2.软件设计模式3.设计模式分类 二、&#x1f4e3;UML图1.类图概述2.类的表示法3.类与类之间的关系关联关系&#xff08;1&#xff09;单向关联&#xff08;2&#xff09;双向关联&#xff08;3&#xff09;…

VM安装Sonoma【笔记】

VMware Workstation安装MacOS Sonoma 1、配置虚拟机&#xff0c;根据系统性能调整参数&#xff1b; 2、先不焦急启动虚拟机&#xff0c;打开虚拟机存储目录&#xff0c;以文本方式打开.vmx文件&#xff08;这里以Sonoma.vmx为例&#xff09;&#xff1b; 这里只针对Inter CP…

异步编程Promise

文章目录 前言一、关于 Promise 的理解与使用1.相关知识补充区别实例对象和函数对象同步回调异步回调Js中的错误&#xff08;error&#xff09;和错误处理 2.promise是什么 二、Promise 原理三、Promise 封装 Ajax四、async 与 await总结 前言 在项目中&#xff0c;promise的使…

阿赵UE学习笔记——2、新建项目和项目设置

阿赵UE学习笔记目录 大家好&#xff0c;我是阿赵。继续来学习虚幻引擎的使用。这次介绍一下新建项目和项目设置。 一、新建项目 通过桌面快捷方式&#xff0c;或者EPIC Games Loader&#xff0c;启动虚幻引擎。 启动完成后&#xff0c;会打开项目管理的界面&#xff0c;可以看…

HarmonyOS ArkTS 中DatePicker先择时间 路由跳转并传值到其它页

效果 代码 代码里有TextTimerController 这一种例用方法较怪&#xff0c;Text ,Button Datepicker 的使用。 import router from ohos.router’则是引入路由模块。 import router from ohos.router Entry Component struct TextnewClock {textTimerController: TextTimerContr…

【开源项目】基于STM32的服装仓库环境监测系统设计与实现

该系统结合了多种物联网的技术如WiFi技术、嵌入式技术等&#xff0c;通过温湿度传感器和火焰传感器实时采集仓库的温度、空气湿度和仓库明火情况。系统能够自动判断并处理异常情况&#xff0c;当温湿度超过阈值时风扇模块开始工作进行通风&#xff0c;当有明火时抽水泵模块开始…