Python从0到100(三十二):lxml模块的学习与应用

2024-06-11 14:36

本文主要是介绍Python从0到100(三十二):lxml模块的学习与应用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

学习目标

  • 掌握使用lxml库提取数据的方法。
  • 理解lxml在数据处理后提取的数据类型。
  • 学习将元素(element)转换为字符串的方法。

1. lxml的安装

通过以下命令安装lxml库:

pip install lxml

2. lxml的使用

2.1 基础使用
  • 导入lxml的etree库:
    from lxml import etree
    
  • 将字符串转换为Element对象,并使用xpath方法提取数据:
    html = etree.HTML(text)
    ret_list = html.xpath("xpath字符串")
    
  • 将Element对象转换为字符串(bytes类型):
    etree.tostring(element)
示例

假设有以下HTML内容,我们将对其进行操作:

<div> <ul> <li class="item-1"><a href="link1.html">first item</a></li> <li class="item-1"><a href="link2.html">second item</a></li> <li class="item-inactive"><a href="link3.html">third item</a></li> <li class="item-1"><a href="link4.html">fourth item</a></li> <li class="item-0"><a href="link5.html">fifth item</a> <!-- 注意此处缺少闭合标签 --></ul> </div> 

使用lxml进行操作的代码如下:

from lxml import etreetext = """ 
<div> <ul> ... </ul> </div> """html = etree.HTML(text)
print(type(html))handeled_html_str = etree.tostring(html).decode()
print(handeled_html_str)

输出结果:

<class 'lxml.etree._Element'>
<html><body><div> ... </div> </body></html>

注意:lxml能够补充缺失的标签,但在数据提取时可能遇到问题。使用etree.tostring方法可以观察lxml处理后的HTML结构。

2.2 进阶练习

假设每个class为item-1li标签代表一条新闻数据,我们将这些数据组成字典。

from lxml import etreetext = """ 
<div> <ul> ... </ul> </div> """html = etree.HTML(text)# 获取所有`li`标签的`href`和标题
href_list = html.xpath("//li[@class='item-1']/a/@href")
title_list = html.xpath("//li[@class='item-1']/a/text()")# 组装新闻数据
for href in href_list:item = {"href": href, "title": title_list[href_list.index(href)]}print(item)

输出结果:

{'href': 'link1.html', 'title': 'first item'}
{'href': 'link2.html', 'title': 'second item'}
{'href': 'link4.html', 'title': 'fourth item'}
2.3 进阶使用

如果提取的是一个节点而非属性或文本,lxml会返回Element对象,可以继续使用xpath方法。

from lxml import etreetext = """ 
<div> <ul> ... </ul> </div> """html = etree.HTML(text)
li_list = html.xpath("//li[@class='item-1']")for li in li_list:item = {"href": li.xpath("./a/@href")[0] if li.xpath("./a/@href") else None,"title": li.xpath("./a/text()")[0] if li.xpath("./a/text()") else None}print(item)

输出结果:

{'href': None, 'title': 'first item'}
{'href': 'link2.html', 'title': 'second item'}
{'href': 'link4.html', 'title': 'fourth item'}

小结

  • 安装lxml库:pip install lxml
  • 导入lxml库:from lxml import etree
  • 使用lxml转换和解析HTML:etree.HTML(text)
  • 使用xpath提取数据:data.xpath("//div/text()")
  • 注意lxml提取的数据都是列表类型
  • 对于复杂数据,先提取大节点,再遍历小节点进行操作,即先分组再提取数据

通过上述学习,你应该能够使用lxml库进行基本的数据提取和处理。在实际应用中,你可能需要根据具体情况调整xpath表达式以适应不同的数据结构。

好书推荐

在这里插入图片描述
《人工智能注意力机制:体系、模型与算法剖析》融合了资深开发工程师多年一线工作经验,从注意力机制这一重要角度入手,阐述注意力机制的产生背景和发展历程,通过详实的理论剖析,以深入浅出的方式着重介绍注意力机制在计算机视觉与自然语言处理两大人工智能方向中的体系、模型与算法,并在最后将注意力机制在其他智能领域的应用加以拓展。内容循序渐进,图文细腻讲解,使读者身临其境,迅速、深入地掌握各种经验和技巧。
内容简介
“注意”作为一切思维活动的起点,一直是哲学、心理学和认知神经科学的重点研究对象。随着计算机技术的发展,人类对注意力机制的模拟和应用成为计算机科学领域的热点研究方向——让计算机能够具有类似人类的注意力机制,使其能够有效地应用于对数据的理解和分析。Transformer模型诞生后,注意力机制在人工智能各大重要领域的研究和应用更是如火如荼,成果丰硕。
《人工智能注意力机制:体系、模型与算法剖析》从注意力机制这一重要角度入手,阐述注意力机制的产生背景和发展历程,通过详实的理论剖析,以深入浅出的方式着重介绍注意力机制在计算机视觉、自然语言处理,以及多模态机器学习三大人工智能方向中的应用思路、模型与算法。
《人工智能注意力机制:体系、模型与算法剖析》以人工智能相关专业研究人员,特别是计算机视觉与自然语言处理等领域的研发人员作为主要读者对象,一方面帮其梳理技术的发展脉络、开拓思路、构建完整的认知体系;另一方面为其剖析算法原理、深刻理解算法细节。本书提供配套源代码,下载方式见封底。

购买链接:https://item.jd.com/14544040.html
在这里插入图片描述

这篇关于Python从0到100(三十二):lxml模块的学习与应用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1051448

相关文章

使用Python绘制蛇年春节祝福艺术图

《使用Python绘制蛇年春节祝福艺术图》:本文主要介绍如何使用Python的Matplotlib库绘制一幅富有创意的“蛇年有福”艺术图,这幅图结合了数字,蛇形,花朵等装饰,需要的可以参考下... 目录1. 绘图的基本概念2. 准备工作3. 实现代码解析3.1 设置绘图画布3.2 绘制数字“2025”3.3

在Ubuntu上部署SpringBoot应用的操作步骤

《在Ubuntu上部署SpringBoot应用的操作步骤》随着云计算和容器化技术的普及,Linux服务器已成为部署Web应用程序的主流平台之一,Java作为一种跨平台的编程语言,具有广泛的应用场景,本... 目录一、部署准备二、安装 Java 环境1. 安装 JDK2. 验证 Java 安装三、安装 mys

python使用watchdog实现文件资源监控

《python使用watchdog实现文件资源监控》watchdog支持跨平台文件资源监控,可以检测指定文件夹下文件及文件夹变动,下面我们来看看Python如何使用watchdog实现文件资源监控吧... python文件监控库watchdogs简介随着Python在各种应用领域中的广泛使用,其生态环境也

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

Java调用Python代码的几种方法小结

《Java调用Python代码的几种方法小结》Python语言有丰富的系统管理、数据处理、统计类软件包,因此从java应用中调用Python代码的需求很常见、实用,本文介绍几种方法从java调用Pyt... 目录引言Java core使用ProcessBuilder使用Java脚本引擎总结引言python

python 字典d[k]中key不存在的解决方案

《python字典d[k]中key不存在的解决方案》本文主要介绍了在Python中处理字典键不存在时获取默认值的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录defaultdict:处理找不到的键的一个选择特殊方法__missing__有时候为了方便起见,

使用Python绘制可爱的招财猫

《使用Python绘制可爱的招财猫》招财猫,也被称为“幸运猫”,是一种象征财富和好运的吉祥物,经常出现在亚洲文化的商店、餐厅和家庭中,今天,我将带你用Python和matplotlib库从零开始绘制一... 目录1. 为什么选择用 python 绘制?2. 绘图的基本概念3. 实现代码解析3.1 设置绘图画

Python pyinstaller实现图形化打包工具

《Pythonpyinstaller实现图形化打包工具》:本文主要介绍一个使用PythonPYQT5制作的关于pyinstaller打包工具,代替传统的cmd黑窗口模式打包页面,实现更快捷方便的... 目录1.简介2.运行效果3.相关源码1.简介一个使用python PYQT5制作的关于pyinstall

使用Python实现大文件切片上传及断点续传的方法

《使用Python实现大文件切片上传及断点续传的方法》本文介绍了使用Python实现大文件切片上传及断点续传的方法,包括功能模块划分(获取上传文件接口状态、临时文件夹状态信息、切片上传、切片合并)、整... 目录概要整体架构流程技术细节获取上传文件状态接口获取临时文件夹状态信息接口切片上传功能文件合并功能小

python实现自动登录12306自动抢票功能

《python实现自动登录12306自动抢票功能》随着互联网技术的发展,越来越多的人选择通过网络平台购票,特别是在中国,12306作为官方火车票预订平台,承担了巨大的访问量,对于热门线路或者节假日出行... 目录一、遇到的问题?二、改进三、进阶–展望总结一、遇到的问题?1.url-正确的表头:就是首先ur