活动地址:CSDN21天学习挑战赛
学习日记
1,学习知识点
Python 操作 lxml库与Xpath(爬取网页指定内容)
2,学习遇到的问题
内容较复杂
3,学习的收获
Python lxml库
4,实操
1.Python lxml库介绍
lxml是XML和HTML的解析器,其主要功能是解析和提取XML和HTML中的数据;lxml和正则一样,也是用C语言实现的,是一款高性能的python HTML、XML解析器,也可以利用XPath语法,来定位特定的元素及节点信息
HTML是超文本标记语言,主要用于显示数据,他的焦点是数据的外观
XML是可扩展标记语言,主要用于传输和存储数据,他的焦点是数据的内容1.1 安装lxml模块库
pip install lxml
1.2 lxml 是什么
lxml是以Python语言编写的库,主要用于解析和提取HTML或者XML格式的数据,它不仅功能非常丰富,而且便于使用,可以利用XPath语法快速地定位特定的元素或节点。
lxml库中大部分的功能都位于 lxml.etree模块中,导入lxml.etree模块的常见方式如下:
from lxml import etree
lxml库的一些相关类如吓:
●Element类 :可以理解为XML的节点。
●ElementTree类 :可以理解为一个完整的XML文档树。
●ElementPath类 :可以理解为XPath ,于搜索和定位节点。1.2.1 Element类简介
Element类是XML处理的核心类,可以直观地理解为XML的节点,大部分XML节点的处理都是围绕着该类进行的。要想创建一个节点对象,则可以通过构造函数直接创建,示例如下:
root = etree.Element('root')
上述示例中,参数root表示节点的名称。
关于Element类的相关操作,主要可分为三个部分,分别是节点操作、节点属性的操作、节点内文本的操作,下面进行逐一介绍。
1. 节点操作
若要获取节点的名称,则可以通过tag属性获取,示例如下:
print(root.tag) # 输出结果如下 root
2. 节点属性的操作
在创建节点的同时,可以为节点增加属性。节点中的属性是以“key-value”的形式进行存储的,类似于字典的存储方式。通过构造方法创建节点时,可以在该方法中以参数的形式设置属性,其中参数的名称表示属性的名称,参数的值表示为属性的值。创建属性的示例如下:
# 创建root节点,并为其添加属性 root = etree.Element('root', interesting='totally') print(etree.tostring(root)) # 输出结果如下 b'<root interesting="totally"/>'
此外,可以通过set()方法给已有的节点添加属性。在调用该方法时可以传入两个参数,其中第一个参数表示属性的名称,第二个参数表示属性的值,示例如下:
# 再次给root节点添加age属性 root.set('age', '30') print(etree.tostring(root)) # 输出结果如下 b'<root interesting="totally" age=&