Python解析库lxml与xpath用法总结

Python解析库lxml与xpath用法总结,第1张

本文主要围绕以xpath和lxml库进行展开:

一、xpath 概念、xpath节点、xpath语法、xpath轴、xpath运算符

二、lxml的安装、lxml的使用、lxml案例

一、xpath

1.xpath概念

XPath 是一门在 XML 文档中查找信息的语言。XPath 使用路径表达式在 XML 文档中进行导航 。XPath 包含一个标准函数库 。XPath 是 XSLT 中的主要元素 。XPath 是一个 W3C 标准 。

2.xpath节点

xpath有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。

节点关系:父、子、兄弟、先辈、后辈。

3.xpath语法

xpath语法在W3c网站上有详细的介绍,这里截取部分知薯戚逗识,供大家学习。

XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。下面列出了最有用的路径表达式:

在下面的表格中,我们已列出了一些路径表达式以及表达式的结果:

谓语用来查找某个特定的节点或者包含某个指定的值仔汪的节点。

谓语被嵌在方括号中。

在下面的表格中,我们列出了带有谓语的一些路径表达式,以及表达式的结果:

XPath 通配符可用来选取未知的 XML 元素。

在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:

通过在路径表达式中使用"|"运算符,您可以选取若干个路径。

在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:

4.xpath 轴

轴可定义相对于当前节点的节点集。

5.xpath运算符

下面列出了可用在 XPath 表达式中的运算符:

好了,xpath的内容就这么多了。接下来我们要介绍一个神器lxml,他的速度很快,曾经一直是我使用beautifulsoup时最钟爱的解析器,没数卖有之一,因为他的速度的确比其他的html.parser 和html5lib快了许多。

二、lxml

1.lxml安装

lxml 是一个xpath格式解析模块,安装很方便,直接pip install lxml 或者easy_install lxml即可。

2.lxml 使用

lxml提供了两种解析网页的方式,一种是你解析自己写的离线网页时,另一种 则是解析线上网页。

导入包:

1.解析离线网页:

2.解析在线网页:

那么我们怎么获取这些标签和标签对应的属性值了,很简单,首先获取标签只需你这样做:

然后我们可以,比方说,你要获取a标签内的文本和它的属性href所对应的值,有两种方法,

1.表达式内获取

2.表达式外获取

这样就完成了获取,怎么样,是不是很简单了,哈哈哈。

下面再来lxml的解析规则:

3.lxml案例

为了偷懒,我决定还是采用urllib那篇文章的代码,哈哈哈,机智如我。

lxml是Python中与XML及HTML相关功能中最丰富和最容易使用的库。lxml并不是Python自带的包,而是为libxml2和libxslt库的一个Python化坦拍的绑定。它与众不同的地方袭虚是它兼顾了这些库的速度和功能完整性,以及纯Python API的简洁性,与大家熟知的ElementTree API兼容但比之更优越!但安装lxml却又有点麻烦,因为存在依赖,直接安装的话用easy_install, pip都不能成功,会报gcc错误。下面列出来Windows、Linux下面的安装方法:

【Windows系统】

先确保Python已经安装好,环境变量也配置好了,相应的的easy_install、pip也安装好了.

1. 执行 pip install virtualenv

[python] view plain copy print?

C:\>pip install virtualenv

Requirement already satisfied (use --upgrade to upgrade): virtualenv in c:\python27\lib\site-package

s\virtualenv-12.0.4-py2.7.egg

2. 从官方网站下载与系统,Python版本匹配的lxml文件:

http //pypi.python.org/pypi/lxml/2.3/

NOTE:

比如说我的电脑是Python 2.7.4, 64位 *** 作系统,那么我就可以下载

[python] view plain copy print?

lxml-2.3-py2.7-win-amd64.egg (md5) # Python Egg

lxml-2.3.win-amd64-py2.7.exe (md5) # MS Windows installer

3. 执行 easy_install lxml-2.3-py2.7-win-amd64.egg

[python] view plain copy print?

D:\Downloads>easy_install lxml-2.3-py2.7-win-amd64.egg# 进入该文件所在目录执行该命令

Processing lxml-2.3-py2.7-win-amd64.egg

creating c:\python27\lib\site-packages\lxml-2.3-py2.7-win-amd64.egg

Extracting lxml-2.3-py2.7-win-amd64.egg to c:\python27\lib\site-packages

Adding lxml 2.3 to easy-install.pth file

Installed c:\python27\lib\site-packages\lxml-2.3-py2.7-win-amd64.egg

Processing dependencies for lxml==2.3

Finished processing dependencies for lxml==2.3

NOTE:

1. 可用exe可执行文件,方法更简单直接安装就可以

2. 可用easy_install安装方式,也可以用pip的方式

[python] view plain copy print?

#再执行下,就安装成功了!

>>>import lxml

>>>

3. 如用pip安装,常用命令就是:

pip install simplejson # 安装Python包

pip install --upgrade simplejson # 升级Python包

pip uninstall simplejson# 卸载Python包

4. 如用Eclipse+Pydev的开发方式,需要移除旧包,重新加载一次

Window -->Preferences -->PyDev -->Interperter-python # 否则导包的时候会报错

【Linux系统】

因为lxml依赖的包如下:

 拍信燃 libxml2, libxml2-devel, libxlst, libxlst-devel, python-libxml2, python-libxslt

所以安装步骤如下:

第一步: 安装 libxml2

$ sudo apt-get install libxml2 libxml2-dev

第二步: 安装 libxslt

$ sudo apt-get install libxlst libxslt-dev

第三步: 安装 python-libxml2 和 python-libxslt

$ sudo apt-get install python-libxml2 python-libxslt

第四步: 安装 lxml

$ sudo easy_install lxml


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12396217.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存