爬虫---lxml简单操做

2021年11月24日 阅读数:2
这篇文章主要向大家介绍爬虫---lxml简单操做,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

  前几篇写了一些Beautiful Soup的一些简单操做,也拿出来了一些实例进行实践,今天引入一个新的python库lxmt,lxmt也能够完成数据的爬取哦html

 

什么是lxml

 lxml是python的一个解析库,支持HTML和XML的解析,支持XPath解析方式,并且解析效率很是高。node

lxml学习文档:https://lxml.de/python

 

什么是xpath

XPath相信你们都知道,在作自动化测试的时候有个定位方法就是xpath,对没错就是它;windows

XPath , 全称XML Path Language ,即XML 路径语言,它是一门在XML 文档中查找信息的语言。它最初是用来搜寻XML 文档的,可是它一样适用于HTML 文档的搜索。XPath的选择功能十分强大,它提供了很是简明的路径选择表达式,另外,它还提供了超过100个内建函数,用于字符串、数值、时间的匹配以及节点、序列的处理等,几乎全部咱们想要定位的节点,均可以用XPath来选择;函数

XPath经常使用规则

表达式 描述
nodename 选取此节点的全部子节点
/ 从当前节点选取直接子节点
// 从当前节点选取子孙节点
. 选取当前节点
.. 选取当前节点的父节点
@ 选取属性
* 通配符,选择全部元素节点与元素名
@* 选取全部属性
[@属性] 选取具备给定属性的全部元素
[@属性=‘value’] 选取给定属性具备给定值的全部元素

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

XPath学习文档:https://www.w3.org/TR/xpath/all/学习

 

lxml安装

windows安装测试

# lxmt安装
pip install lxml

#若是按照失败,可能缺乏libxml2库信息,选择wheel进行安装
# https://www.lfd.uci.edu/~gohlke/pythonlibs/ 下载对应python版本的lxml版本

pip install 下载内容(lxml版本)

 

Liunx安装url

# 经过pip安装
pip install lxml

 

lxml简单使用

<html>
<body>
<div>
<ul>
<li class="item-0"><a href="link1.html">今每天气</a></li>
<li class="item-1"><a href="link2.html">明每天气</a></li>
<li class="item-2"><a href="link3.html">后每天气</a></li>
<li class="item-3"><a href="link4.html">周末天气</a></li>
</ul>
</div>
</body>
</html>

经过上面简单的HTML简单了解下lxml.etreespa

使用lxml下的etree首先解析html内容,经过xpath进行找到对应的li标签内容.net

一、获取li全部节点

# 导入lxml
from lxml import etree
# 解析
html = etree.HTML(text)
result = html.xpath('//li')


代码结果:
[<Element li at 0x3a0a8c8>, <Element li at 0x3a0a888>, <Element li at 0x3a0a988>, <Element li at 0x3a0a9c8>]

这里能够看到是一个列表形式,其中每一个元素都是一个element对象,若是要取出其中一个对象,能够直接经过下标

二、获取子节点

# 导入lxml
from lxml import etree
# 解析
html = etree.HTML(text)
# 查找li下的全部的a标签
result = html.xpath('//li/a')


代码结果:
[<Element li at 0x3a0a8c8>, <Element li at 0x3a0a888>, <Element li at 0x3a0a988>, <Element li at 0x3a0a9c8>]

三、获取li标签下的全部文字

# 导入lxml
from lxml import etree
# 解析
html = etree.HTML(text)
# 经过text()获取所有文字
result = html.xpath('//li/a/text()')


代码结果:
['今每天气', '明每天气', '后每天气', '周末天气']

四、属性获取

# 导入lxml
from lxml import etree
# 解析
html = etree.HTML(text)
# 经过@属性值获取对应属性
result = html.xpath('//li/a/@href')

代码结果:
['link1.html', 'link2.html', 'link3.html', 'link4.html']

 

下一篇: unity序列化