codecamp

Beautiful Soup 4 怎么安装

本章节主要介绍beautifulsoup4怎么安装,以及解析器的安装教程。

安装 Beautiful Soup

如果你用的是新版的 Debain 或 ubuntu,那么可以通过系统的软件包管理来安装:

$ apt-get install Python-bs4

Beautiful Soup 4 通过 PyPi 发布,所以如果你无法使用系统包管理安装,那么也可以通过 ​easy_install​ 或 ​pip​ 来安装.包的名字是 ​beautifulsoup4​ ,这个包兼容 Python2 和 Python3.

$ easy_install beautifulsoup4

$ pip install beautifulsoup4

(在 PyPi 中还有一个名字是 ​BeautifulSoup​ 的包,但那可能不是你想要的,那是 Beautiful Soup3 的发布版本,因为很多项目还在使用 BS3, 所以 ​BeautifulSoup​ 包依然有效.但是如果你在编写新项目,那么你应该安装的 ​beautifulsoup4​ )

如果你没有安装 ​easy_install​ 或 ​pip​ ,那你也可以 下载BS4的源码 ,然后通过 setup.py 来安装.

$ Python setup.py install

如果上述安装方法都行不通,Beautiful Soup 的发布协议允许你将 BS4 的代码打包在你的项目中,这样无须安装即可使用.

作者在 Python2.7 和 Python3.2 的版本下开发 Beautiful Soup, 理论上 Beautiful Soup 应该在所有当前的 Python 版本中正常工作

安装完成后的问题

Beautiful Soup 发布时打包成 Python2 版本的代码,在 Python3 环境下安装时,会自动转换成 Python3 的代码,如果没有一个安装的过程,那么代码就不会被转换.

如果代码抛出了 ​ImportError​ 的异常: “No module named HTMLParser”, 这是因为你在 Python3 版本中执行 Python2 版本的代码.

如果代码抛出了 ​ImportError​ 的异常: “No module named html.parser”, 这是因为你在 Python2 版本中执行 Python3 版本的代码.

如果遇到上述2种情况,最好的解决方法是重新安装 BeautifulSoup4.

如果在ROOT_TAG_NAME = u’[document]’代码处遇到 ​SyntaxError​ “Invalid syntax”错误,需要将把 BS4 的 Python 代码版本从 Python2 转换到 Python3. 可以重新安装 BS4:

$ Python3 setup.py install

或在bs4的目录中执行Python代码版本转换脚本

$ 2to3-3.2 -w bs4

安装解析器

Beautiful Soup 支持 Python 标准库中的 HTML 解析器,还支持一些第三方的解析器,其中一个是 lxml .根据操作系统不同,可以选择下列方法来安装lxml:

$ apt-get install Python-lxml

$ apt-get install Python-lxml

$ apt-get install Python-lxml

另一个可供选择的解析器是纯Python实现的 html5lib , html5lib 的解析方式与浏览器相同,可以选择下列方法来安装 html5lib:

$ apt-get install Python-html5lib

$ apt-get install Python-html5lib

$ apt-get install Python-html5lib

下表列出了主要的解析器,以及它们的优缺点:

解析器 使用方法 优势 劣势
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格式的文档
  • 速度慢
  • 不依赖外部扩展

推荐使用lxml作为解析器,因为效率更高. 在 Python2.7.3 之前的版本和 Python3 中3.2.2之前的版本,必须安装lxml或html5lib, 因为那些 Python 版本的标准库中内置的 HTML 解析方法不够稳定.

提示: 如果一段 HTML 或 XML 文档格式不正确的话,那么在不同的解析器中返回的结果可能是不一样的,查看 解析器之间的区别 了解更多细节。


Beautiful Soup 4 入门手册
Beautiful Soup 4 怎么使用
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }