上接:
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
扫描二维码关注公众号,回复: 5068321 查看本文章 -
编码自动检测_ 功能大部分时候都能猜对编码格式,但有时候也会出错.
-
有时候即使猜测正确,也是在逐个字节的遍历整个文档后才猜对的,这样很慢.
-
如果预先知道文档编码,可以设置编码参数来减少自动检查编码出错的概率
-
并且提高文档解析速度
-
语法
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——待更新