Beautiful Soup是python的一个HTML或XML的解析库,我们可以用它来方便的从网页中提取数据,它拥有强大的API和多样的解析方式。
<强> Beautiful Soup的三个特点:强>
-
<李> Beautiful Soup提供一些简单的方法和python式函数,用于浏览,搜索和修改解析树,它是一个工具箱,通过解析文档为用户提供需要抓取的数据李>
<李> Beautiful Soup自动将转入稳定转换为Unicode编码,输出文档转换为utf - 8编码,不需要考虑编码,除非文档没有指定编码方式,这时只需要指定原始编码即可李>
<李> Beautiful Soup位于流行Python的解析器(如lxml和html5lib)之上,允许您尝试不同的解析策略或交易速度以获得灵活性。李>
美丽Soup4通过PyPi发布,所以可以通过系统管理包工具安装,包名字为beautifulsoup4
美元easy_install beautifulsoup4
引用>
或者
美元pip安装beautifulsoup4
也可用通过下载源码包来安装:
# wget https://www.crummy.com/software/BeautifulSoup/bs4/download/4.0/beautifulsoup4-4.1.0.tar.gz # tar xf beautifulsoup4-4.1.0.tar.gz # cd beautifulsoup4 # python设置。py安装美丽汤在解析时实际上是依赖解析器的,它除了支持python标准库中的HTML解析器外还支持第三方解析器如lxml
Beautiful Soup支持的解析器,以及它们的优缺点:
解析器 使用方法 优势 劣势 Python标准库 BeautifulSoup(标记、“html.parser”)
<李> Python的内置标准库李> <李>执行速度适中李> <李>文档容错能力强李>
<李> Python 2.7.3或3.2.2)前的版本中文档容错能力差李>
lxml HTML解析器 BeautifulSoup(标记、“lxml”)<李>速度快李> <李>文档容错能力强李>
<李>需要安装C语言库李>
lxml XML解析器BeautifulSoup(标记,“lxml”,“xml”)
BeautifulSoup(标记、“xml”)
<李>速度快李> <李>唯一支持XML的解析器李>
<李>需要安装C语言库李>
html5lib BeautifulSoup(标记、“html5lib”)<李>最好的容错性李> <李>以浏览器的方式解析文档李> <李>生成HTML5格式的文档李>
<李>速度慢李> <李>不依赖外部扩展李>
安装解析器:
pip安装lxml美元 美元pip安装html5lib推荐使用lxml作为解析器,因为效率更高。在Python2.7.3之前的版本和Python3中3.2.2之前的版本,必须安装lxml或html5lib,因为那些Python版本的标准库中内置的HTML解析方法不够稳定
通过传入一段字符或一个文件句柄,BeautifulSoup的构造方法就能得到一个文档的对象,选择合适的解析器来解析文档,如手动指定将选择指定的解析器来解析文档,Beautiful Soup将复杂的HTML文档转换成一个复杂的树形结构,每个节点都是python对象,所有对象可以归纳为4种:标签,NavigableString, BeautifulSoup、评论
BeautifulSoup版本4的包是在bs4中引入的
从bs4进口BeautifulSoup #下面代码示例都是用此文档测试 html_doc=" " & lt; html> & lt; head> & lt; title>榛睡鼠的story & lt;/head> & lt; body> & lt; p类="标题"祝辞& lt; b>榛睡鼠的story & lt;/p> 类& lt; p=肮适隆痹诖忧坝腥鲂〗忝?和他们的名字分别是 & lt; a href=" http://example.com/elsie " rel=巴獠縩ofollow”class="妹妹" id=發ink1”祝辞Elsie & lt; a href=" http://example.com/lacie " rel=巴獠縩ofollow”class="妹妹" id=發ink2”祝辞Lacie和 & lt; a href=" http://example.com/tillie " rel=巴獠縩ofollow”class="妹妹" id=發ink3”祝辞Tillie; 他们住在井底。;/p> & lt; p类="故事"在……& lt;/p> ”“” 标记=" & lt; b> & lt; !——嘿,老兄。想买一个使用解析器# 63;——祝辞& lt;/b>” 汤=BeautifulSoup (html_doc“lxml”) soup1=BeautifulSoup(标记、“lxml”) 标签=soup.a navstr=tag.string 评论=soup1.b.string 打印(类型(标签))#标签标签对象 打印(类型(评论))#评论对象包含文档注释内容 打印(类型(navstr)) # NavigableString对象包装字符串内容 打印(类型(汤))# BeautifulSoup对象为文档的全部内容 # & lt;类“bs4.element.Tag”比; & lt;类“bs4.element.Comment”比; & lt;类“bs4.element.NavigableString”比; & lt;类bs4.BeautifulSoup的祝辞python3解析库BeautifulSoup4的安装配置与基本用法