本文主要是介绍Python3网络爬虫教程15——BeautifulSoup4中的编码,格式化,解析器的区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
上接:
Python3网络爬虫教程14——BeautifulSoup4之搜索文档树
https://blog.csdn.net/u011318077/article/details/86633433
5.5. 格式化输出
-
prettify() 方法将Beautiful Soup的文档树格式化后以Unicode编码输出,
-
每个XML/HTML标签都独占一行
-
如下示例
markup = ‘I linked to example.com’
soup = BeautifulSoup(markup)
soup.prettify()
print(soup.prettify())# <html># <head># </head># <body># <a href="http://example.com/"># I linked to# <i># example.com# </i># </a># </body># </html>
5.6. 解析器的区别
-
主要的解析器,以及它们的优缺点
Python标准库 BeautifulSoup(markup, “html.parser”)
Python的内置标准库
执行速度适中
文档容错能力强
Python 2.7.3 or 3.2.2)前 的版本中文档容错能力差lxml HTML 解析器 BeautifulSoup(markup, “lxml”)
速度快
文档容错能力强
需要安装C语言库
lxml XML 解析器
BeautifulSoup(markup, [“lxml-xml”])BeautifulSoup(markup, “xml”)
速度快
唯一支持XML的解析器
需要安装C语言库html5lib BeautifulSoup(markup, “html5lib”)
最好的容错性
以浏览器的方式解析文档
生成HTML5格式的文档
速度慢
不依赖外部扩展
5.7. 编码
-
任何HTML或XML文档都有自己的编码方式,比如ASCII 或 UTF-8,
-
但是使用Beautiful Soup解析后,文档都被转换成了Unicode
-
编码自动检测_ 功能大部分时候都能猜对编码格式,但有时候也会出错.
-
有时候即使猜测正确,也是在逐个字节的遍历整个文档后才猜对的,这样很慢.
-
如果预先知道文档编码,可以设置编码参数来减少自动检查编码出错的概率
-
并且提高文档解析速度
-
语法
soup = BeautifulSoup(markup, from_encoding=“iso-8859-8”) -
通过Beautiful Soup输出文档时,不管输入文档是什么编码方式,
-
输出编码均为UTF-8编码
5.8. 补充知识
- 复制Beautiful Soup对象
- copy.copy() 方法可以复制任意 Tag 或 NavigableString 对象
import copy
p_copy = copy.copy(soup.p)
print p_copy
#I want pizza and more pizza!
本章案例较多:
源代码请到GITHUB下载:
https://github.com/FangbaiZhang/TLXY_study_note/tree/master/Spider
下接:
Python3网络爬虫教程16——动态HTML(Selenium + Firefox/Chrome的使用)
https://blog.csdn.net/u011318077/article/details/86692354
这篇关于Python3网络爬虫教程15——BeautifulSoup4中的编码,格式化,解析器的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!