爬虫学习: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.hqwc.cn/news/690475.html

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

相关文章

ppt转pdf的java实现

一、实现方式 java采用jacob包的功能,把ppt演示文稿转换为pdf。 支持文件格式:pptx,ppt 二、事先准备 1、依赖于office,需安装office办公软件 2、需要下载一个jacob-1.20-x64.dll的文件,放到java的bin目录下。 文件可以网上搜…

STM32睡眠模式

文章目录 前言PWR介绍电源框图上电复位和掉电复位可编程电压检测器低功耗模式模式选择电源控制寄存器 睡眠模式停止模式待机模式 前言 在单片机产品中,例如遥控这类产品,长时间处于待机状态下,所以对于这类产品在待机时就应该尽可能的减少不…

如何利用ChatGPT辅助下处理:ENVI、GEE、Python等遥感数据

遥感技术主要通过卫星和飞机从远处观察和测量我们的环境,是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型,在理解和生成人类语言方面表现出了非凡的能力。本课程重点介绍ChatGPT在遥感中的应用,人工智…

苹果电脑怎么清内存?2024有哪些好用的工具?

在使用苹果电脑的过程中,我们可能会遇到系统运行缓慢、程序响应迟缓或频繁出现应用程序崩溃的情况,这些问题很可能是由于内存占用过高所导致。内存,或称为RAM(RandomAccessMemory),是计算机的临时存储区&am…

DDoS攻防,本质上是成本博弈!

在互联网里,分布式拒绝服务(DDoS)攻击作为一种常见的网络威胁,持续对网站、在线服务和企业基础设施构成严重挑战。本文旨在探讨实施DDoS攻击的大致成本、以及企业如何采取有效措施来防范此类攻击,确保业务连续性和网络…

Android Studio(AS)使用别人的项目与gradle包并运行项目

一、问题描述 在进行AS开发时,我们可能会使用到别人的项目,但发现别人把项目发给我们后会发现gradle项目同步失败o(≧口≦)o,此时计有三: 1.横行霸道、豪取抢夺:直接空降到项目人那里,强他的电脑占为己有…

最新网页版USB转串口芯片CH340中文规格书手册(20240511)

前言 南京沁恒的产品已经很成熟了,完全可替代国外USB转串口产品,不必迷信FT232,CP2102之类了。 另外,急着买芯片,直接跑过去的,看过几次妹子了:) CH340手册,基于网页3.3版本,规格书…

Python装饰器带括号和不带括号的理解

装饰器是 Python 中一个强大且灵活的特性,允许用户在不修改原有函数或类定义的基础上,为其增加额外功能。 今天在尝试自定义 Python 装饰器的时候遇到了一个问题,因为以前一直是使用装饰器,基本没有自定义过装饰器,所…

利用一下Chat-GPT写两段处理字符串的简单样例ABAP程序。这样可以大大提高工作效率。Chat-GPT的能力真是让人震撼。

我让Caht-GPT写两段ABAP 程序,第一段程序要求如下: 判读字符串里面是否含有特殊字符,这里说的特殊字符不包括键盘上能够输入的字符,如果有这样的特殊字符则输出来。 DATA: lv_string TYPE string VALUE 你的字符串,lv_result TYP…

【Go】Go Swagger 生成和转 openapi 3.0.3

本文档主要描述在 gin 框架下用 gin-swagger 生成 swagger.json 的内容,中间猜的坑。以及,如何把 swagger 2.0 转成 openapi 3.0.3 下面操作均在项目根目录下执行 生成 swagger 2.0 import swagger go get -u github.com/swaggo/gin-swagger go get …

【Java orm 框架比较】十一 新增 原生jdbc对比

迁移到(https://gitee.com/wujiawei1207537021/spring-orm-integration-compare) orm框架使用性能比较 比较mybatis-plus、lazy、sqltoy、mybatis-flex、easy-query、mybatis-mp、jpa、dbvisitor、beetlsql、dream_orm、wood、hammer_sql_db、原生jdbc…

Python图形界面(GUI)Tkinter笔记(四):控件的定位(2)

Tkinter(GUI)设计图形界面时有三种控件的包装方法去定位各控件在窗口(父容器、根窗口)上的位置。 【1】pack()方法:用方位来定位位置,类似于Word文档中的文字对齐方式。 【2】grid()方法:用二…