龟速学爬虫笔记④

在进行python爬虫时,往往还会用到lxml模块。这个模块是什么,有什么功能呢

lxml是什么

lxml是XML和HTML的解析器,其主要功能是解析和提取XML和HTML中的数据;lxml和正则一样,也是用C语言实现的,是一款高性能的python HTML、XML解析器,也可以利用XPath语法,来定位特定的元素及节点信息。

HTML是超文本标记语言,主要用于显示数据,他的焦点是数据的外观。

XML是可扩展标记语言,主要用于传输和存储数据,他的焦点是数据的内容。

其中,lxml提供的etree模块可以专门用于解析HTML/XML包,这也是很多爬虫案例中会和Xpath配合使用的。

lxml的优点在于,相较于BeautifulSoup,其解析速率更高。

安装lxml的方法

这次还是下载的wheel文件,地址是:http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml 依然是下载符合python版本和系统版本的文件,然后到cmd中使用命令行pip install 该.whl文件地址即可。

也可以直接在pycharm中直接下载。

lxml的基本使用

可以利用lxml解析HTML代码,并且在解析HTML代码的时候,如果HTML代码不规范或者不完整,lxml解析器会自动修复或补全代码,从而提高效率。

示例:

#提取html中的数据
from lxml import etree

text = '''

    
>
>

'''
#将字符串解析为html文档
html = etree.HTML(text)
#print(html)
#将字符串序列化为html
result = etree.tostring(html).decode('utf-8')
print(result)
with open('D:\\PythonStudy\\htmls\\nav_com.html','w') as f:
    f.write(result)

运行结果:

龟速学爬虫笔记④_第1张图片
龟速学爬虫笔记④_第2张图片

从这里可以看出,用etree.HTML()可以从text中解析出html文档,自然也是可以从文件中解析html文档的。

etree.tostring()的作用是将Element对象转换为字符串进行输出,但是这里转换过来的是字节流。

要把bytes变为str,就需要用decode()方法。

你可能感兴趣的:(网络安全,python,爬虫,网络安全)