爬虫学习:XPath提取网页数据

目录

一、安装XPath

二、XPath的基础语法 

 1.选取节点

三、使用XPath匹配数据

1.浏览器审查元素

2.具体实例

四、总结


一、安装XPath

控制台输入指令:pip install lxml

二、XPath的基础语法 

        XPath是一种在XML文档中查找信息的语言,可以使用它在HTML源代码文档中通过元素、属性等方式进行查找和提取数据。

 1.选取节点

表达式描述
nodename

选取此元素的所有子元素。

例:div选取div下所有子元素。

/

从根节点选取子节点。

例:/div选取根元素div

//从匹配选择的当前元素下选择文档中的元素,而不考虑它们在文档中的位置。
.选取当前元素。
..选取父元素。
@选取属性。

例:XPath的常用语法格式

ul//li              
#选取ul下所有li子元素,而不管它们在文档的位置。
//@class
# 选取所有具有class属性的元素
ul//li[1]
# 选取ul元素下第一个li子元素
//div[@id="t2"]
# 选取id属性为t2的所有div元素
//li[@class="it"]
#选取class属性为it的li子元素
/div/ul/li[@class="it"]
# 选取根元素div下ul元素下的class属性等于it的li子元素

三、使用XPath匹配数据

1.浏览器审查元素

        上文初步了解了XPath的语法,这里介绍一个技巧,无需我们自己写XPath,使用浏览器自带工具即可,自动生成XPath。

第一步:打开要爬取的网页( 以机场三字代码查询系统_机场代码 (6qt.net)为例)

 按下F12,显示以下界面。

第二步: 点击审查元素按钮

第三步:在左侧选取要爬取的内容

2.具体实例

实例一:根据class属性进行匹配

获取标签文本使用text() 。

from lxml import html
import requests
url="http://www.6qt.net"
res=requests.get(url)
res.encoding="gb2312"
data_html=html.fromstring(res.text)
# 将网络请求返回的文本res.text转换为一个HTML文档对象
name_list=data_html.xpath('//tr[@class="tdbg"]//td[1]/a/text()')
for x in name_list:print(x)

运行结果:

实例二:根据id属性进行匹配

获取标签属性值使用@属性名,以下案例获取了属性title值:@title 。

from lxml import html
import requests
url="http://www.6qt.net"
res=requests.get(url)
res.encoding="gb2312"
data_html=html.fromstring(res.text)
# 将网络请求返回的文本res.text转换为一个HTML文档对象
name_list=data_html.xpath('//div[@id="logo"]/a/@title')
for x in name_list:print(x)

运行结果:

实例三:根据name属性进行匹配

获取了meta标签的content属性

from lxml import html
import requests
url="http://www.6qt.net"
res=requests.get(url)
res.encoding="gb2312"
data_html=html.fromstring(res.text)
# 将网络请求返回的文本res.text转换为一个HTML文档对象
name_list=data_html.xpath('/html/head/meta[@name="Keywords"]/@content')
for x in name_list:print(x)

运行结果:

四、总结

        爬虫是一个自动化获取网页数据的工具,其使用关键在于会分析HTML文档结构,使用正确的Xpath匹配数据,才能获取到想要的内容,所见即所得。

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

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

相关文章

数据结构----二叉树

博主主页: 码农派大星. 关注博主带你了解更多数据结构知识 1. 树型结构 1.1 概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上…

【软考】模拟考卷错题本2024-05-11

1 设计模式- 适配器模式 基本上上述的图解已经涵盖了绝大多数主流的设计模式和其特点。理解记忆下即可,这里对下午的考题也有帮助的。 2 计算机组成原理 cpu 访问速度 这个真的是憨憨咯~看到内存就选内存,题目都没审好。这里的速度比cpu内部的要比外部的…

c++ STL 之栈—— stack 详解

vector 是 stl 的一个关联容器,名叫“栈”,何为“栈”?其实就是一个数组,但有了数组何必还需栈,这是一个高深的问题。 一、简介 1. 定义 栈,是一个柔性数组(可变长数组),可以变大变小…

Centos7安装图形化界面

前言:原文在我的博客网站中,持续更新数通、系统方面的知识,欢迎来访! Centos7安装图形化界面https://myweb.myskillstree.cn/43.html 目录 一、安装GNOME桌面 二、开机自启动修改为命令行模式 三、卸载图形化界面 一、安装GN…

【C++】string类的使用③(修改器Modifiers || 非成员函数重载Non-member function overloads)

🔥个人主页: Forcible Bug Maker 🔥专栏: STL || C 目录 前言🔥修改器(Modifiers)**operator**appendpush_back和pop_backassigninserterasereplaceswap 🔥非成员函数重载&#xff…

Java入门基础学习笔记4——开发Helloworld入门程序

Java程序开发的三个步骤: 1)编写代码 2)编译代码 3)运行代码 注意事项: 第一个java程序建议使用记事本来编写。 建议代码文件名全英文、首字母大写、满足驼峰模式,源代码文件的后缀必须是.java 注意&a…

栈实现队列

一、分析 栈的特点是先出再入,而队列的特点为先入先出,所以我们创造两个栈,一个用来存放数据,一个用来实现其它功能此时栈顶为队尾;当要找队头数据时将前n-1个数据移入到另一个栈中,此时剩余那个数据为队头…

Sqlite在Mybatis Plus中关于时间字段的处理

我的个人项目中,使用Mybatis-Plus 和 Sqlite数据库, 但是在存储和查询时间字段的时候,总是出现问题,记录下我解决问题的过程。 Sqlite会默认把时间字段转成时间戳存储到数据库的字段中,看起来不直观,所以我…

在Linux上安装并运行RabbitMQ

目录 准备CentOS服务器 下载rabbit-server和erlang文件 启动RabbitMQ服务 准备CentOS服务器 两个命令,选一个能用的,查看CentOS服务器的版本 lsb_release -a下载rabbit-server和erlang文件 参考文章:http://t.csdnimg.cn/t8BbM 1、创建新…

Python专题:八、列表(3)

列表的场景应用 统计和肺考试成绩 >不支持字符串和整数之间的比较 sort()函数从小到大排列 reverse()函数从大到小排列 列表推导式 字符串列表的转化,join()函数列表生成字符串 split()函…

黑马程序员HarmonyOS4+NEXT星河版入门到企业级实战教程【18~23】

视频0~17的笔记 页面路由 实现不同页面之间的跳转和数据传递。 页面栈。上限是32个页面,使用router.clear()可以清空页面栈释放内存。 两种跳转模式: 参数一致,都是三个参数 router.pushUrl(),新页面压入页面栈,可以…

keep健身小程序基于FastAdmin+ThinkPHP+UniApp(源码搭建/上线/运营/售后/更新)

基于FastAdminThinkPHPUniApp(目前仅支持微信小程序和公众号) 开发的健身相关行业微信小程序,程序适用于健身房、瑜伽馆、游泳馆、篮球馆等健身培训场所。平台拥有课程售卖、课程预约、多门店管理、私教预约、教练端、会员卡办理、在线商城、…

【35分钟掌握金融风控策略20】贷前风控策略详解-5

目录 反欺诈模型体系和模型在策略中的应用 申请反欺诈评分卡模型 欺诈传导模型 欺诈团伙识别模型 GPS评分卡模型 如何在贷中应用贷前模型 反欺诈模型体系和模型在策略中的应用 反欺诈横型体系主要包括识别个体欺诈和识别团伙欺诈的两类模型。在贷前,常用的识别…

【3dmax笔记】036:FDD修改器

一、FDD修改器简介 FDD修改器是对模型进行变形处理的命令,FDD后面的数字越大,编辑节点越多,编辑越精细,但是FDD控制点多的同时,模型上的节点也要多才可以。 FFD修改器是一种非常灵活的修改器,可以让我们对模型进行自由的变形操作。通过在FFD修改器中设置变形点,我们可…

突破编程界限:探索AI编程新境界

文章目录 一、AI编程助手1.1 Baidu Comate智能代码助手1.2 阿里云 通义灵码 二、场景需求三、体验步骤3.1 官网下载3.2 手动下载 四、试用感受4.1 提示4.2 注释生成代码4.3 代码生成4.4 选中生成注释4.5 查看变更&新建文件4.6 调优建议4.7 插件使用 五、结尾推荐 一、AI编程…

01.基本概念

操作系统 为什么要有操作系统? 计算机时一个十分复杂的系统,又cpu、内存、磁盘、IO设备、网络接口等等复杂的硬件组成,人的精力是有限的,不可能了解所有的硬件接口,但是程序可以。 所以我们在计算机上安装了一层软件&…

InputStream,OutputStream的用法以及相应的案例

1. 文件系统的操作:File类。 2. 文件内容的操作:Stream流。 字符流:IntputStream , OutputStream。 字节流:read , write。 InputStream,OutputStream InputStream和OutputStream都不能被实例…

【Java】/*逻辑控制语句和输入输出—快速总结*/

目录 前言 一、分支语句 1.1 if 语句 1.2 switch 语句 二、循环语句 2.1 while 循环 2.1.1 break 2.1.2 continue 2.2 for 循环 2.3 do_while 循环 三、逻辑语句的小结 四、Java 中的输入输出 4.1 输出到控制台 4.2 从键盘输入 前言 Java 中的逻辑控制语句和C语…

针对头疼的UDP攻击如何定制有效的防护措施

分布式拒绝服务攻击(Distributed Denial of Service)简称DDoS,亦称为阻断攻击或洪水攻击,是目前互联网最常见的一种攻击形式。DDoS攻击通常通过来自大量受感染的计算机(即僵尸网络)的流量,对目标…

[机器学习-04] Scikit-Learn机器学习工具包进阶指南:集群化与校准功能实战【2024最新】

🎩 欢迎来到技术探索的奇幻世界👨‍💻 📜 个人主页:一伦明悦-CSDN博客 ✍🏻 作者简介: C软件开发、Python机器学习爱好者 🗣️ 互动与支持:💬评论 &…