栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【学习笔记】Python - Lxml

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【学习笔记】Python - Lxml

Lxml库

Lxml库是基于libxm12的XML解析库的Python封装,该模块使用C语言编写,解析的速度比Beautiful Soup更快。Lxml库使用Xpath语法解析定位网页数据。

Lxml库的安装

pip install lxml

Lxml库的使用

1、修正HTML代码

Lxml为XML解析库,但也很好地支持了HTML文档地解析功能,这为使用Lxml库爬取网络信息提供了支持条件。

首先需要导入Lxml库中地etree库,利用etree.HTML进行初始化,返回解析后的Element对象,这里可以看到,Lxml有一个非常实用的功能,就是自动修正了HTML代码(比如标签对漏掉的情况也会自动补齐)。

2、读取HTML文件

将上面的HTML文件拷贝到Sublime中保存为HTML文件。

然后通过Lxml库读取HTML文件中的内容。

3、解析HTML文件

经过上面的步骤,便可以使用requests库获取HTML文件,然后用Lxml库来解析HTML文件。

Xpath语法

Xpath是一门在XML文档中查找信息的语言,对HTML文档又很好的支持。

        

                  Jack

                  Male

                  10001

                  100

        

【基本概念】

  • 父节点:每个元素及属性都有一个父节点,上例中的user元素就是name、sex、id和goal的父节点;
  • 子节点:元素节点可以有0个或者多个子节点,上例中的name、sex、id和goal元素就是user的子节点;
  • 同胞节点:拥有相同父节点,上例中的name、sex、id和goal元素就是同胞节点;
  • 先辈节点:某节点的父节点、父节点的父节点等,上例中的name元素的先辈节点是user和user_database;
  • 后代节点:某个节点的子节点、子节点的子节点等,上例中的user_database元素的后代节点是user、name、sex、id和goal;

Xpath使用路径表达式在XML文档中选取节点,节点是通过沿着路径或者step来选取的。

表达式

描述

nodename

选取此节点的所有子节点

/

从根节点选取

//

从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置

.

选取当前节点

..

选取当前节点的父节点

@

选取属性

根据上例举例说明:

路径表达式

结果

user_databaser

选取元素user_databaser的所有子节点

/user_databaser

选取根元素user_databaser

user_databaser/user

选取属于user_databaser的子元素的所有user元素

//user

选取所有user子元素,不考虑他们在文档中位置

user_databaser//user

选取属于user_databaser元素的后代所有user元素,不管位置

//@attribute

选取名为attribute的所有属性

Xpath中也可以使用通配符来选取位置的元素,常用的就是“*”通配符,它可以匹配任何元素节点。

Xpath语法中的谓语用来查找某个特定的节点或者包含某个指定值的节点,谓语被嵌在方括号中。

路径表达式

结果

/user_databaser/user[1]

选取属于user_databaser子元素的第一个user元素

//li{[@attribute]

选取所有拥有名为attribute属性的li元素

//li{[@attribute=’red’]

选取所有li元素,且这些元素拥有值为red的attribute属性

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/445562.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号