beautifulsoup4是一款可以帮助您解析网页文件的工具,网页文件一般都是网站的一部分,当您使用网站或者开发网站的时候,设计网页就是非常关键的一部分了,如果你下载别人的网页,想要从中找到有价值的数据资源,就可以通过这款python beautifulsoup(xml解析器)帮助您从复杂的网页文件中提取可能需要的资源文件,支持HTML和XML两种网页文件分析,支持搜索节点数据、访问节点资源,让您在数据庞大的文件中搜索到关键的数据链接。
软件功能
一个用于解析文档并提取相关信息的工具包。这样你写一个应用不需要写很多代码。
beautifulsoup位于一些流行的Python解析器比如lxml和html5lib的上层
这允许你使用不同的解析策略或者牺牲速度来换取灵活性。
beautifulsoup自动将输入文档转换为Unicode编码,并将输出文档转化为UTF-8编码。
你不需要考虑编码,除非输入文档没有指出其编码并且beautifulsoup无法自动检测到,这时你需要指出原来的编码方式。
beautifulsoup提供了一些简单的方法和Python术语,用于检索和修改语法树
软件特色
Beautiful Soup发布时打包成Python2版本的代码,在Python3环境下安装时,会自动转换成Python3的代码
Beautiful Soup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,其中一个是 lxml .根据操作系统不同,可以选择下列方法来安装lxml
Beautiful Soup选择最合适的解析器来解析这段文档,如果手动指定解析器那么Beautiful Soup会选择指定的解析器来解析文档
Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种
html5lib树生成器不使用标准的树构建API,这使我担心,并导致了一些错误。
markup_attr_map可以优化,因为它总是一个地图。在遇到数据或其他一些罕见的序列化UTF-16LE
Unicode,unicodedammit会将数据转换成Unicode,然后在UTF-8编码。这是浪费,因为它会得到解码回到Unicode。
ElementTree XMLParser有strip_cdata论点,当设置为错误的,应当允许美丽的汤保留CDATA部分代替把它们当作文本。除此之外,这个论点也是现在的HTMLParser,也没有什么。)
目前,htm5lib将CDATA部分为评论。一个尚未发行的版本html5lib变化分析器的处理CDATA节允许的CDATA部分像< >标签和SVG<数学>。
将需要更新的beautifulsoup创建CDATA在这种情况下的对象,而不是注释对象。
安装方法
1.下载完成之后需要解压缩,假设放到D:/python下。
2.运行cmd,切换到D:/python/beautifulsoup4-4.3.2/目录下(根据自己解压缩后的目录和下载的版本号修改),cd /d D:/python//beautifulsoup4-4.3.2
3.运行命令:
setup.py build
setup.py install
4.在IDE下from bs4 import BeautifulSoup,没有报错说明安装成功。
使用方法
tag的属性可以被添加,删除或修改. 再说一次, tag的属性操作方法与字典一样
HTML 4定义了一系列可以包含多个值的属性.在HTML5中移除了一些,却增加更多.最常见的多值的属性是 class (一个tag可以有多个CSS的class). 还有一些属性 rel , rev , accept-charset , headers , accesskey . 在Beautiful Soup中多值属性的返回类型是list:
如果某个属性看起来好像有多个值,但在任何版本的HTML定义中都没有被定义为多值属性,那么Beautiful Soup会将这个属性作为字符串返回
将tag转换成字符串时,多值属性会合并为一个值
字符串常被包含在tag内.Beautiful Soup用 NavigableString 类来包装tag中的字符串:
BeautifulSoup 对象表示的是一个文档的全部内容.大部分时候,可以把它当作 Tag 对象,它支持 遍历文档树 和 搜索文档树 中描述的大部分的方法
注释及特殊字符串
Tag , NavigableString , BeautifulSoup 几乎覆盖了html和xml中的所有内容,但是还有一些特殊对象.容易让人担心的内容是文档的注释部分
Beautiful Soup中定义的其它类型都可能会出现在XML的文档中: CData , ProcessingInstruction , Declaration , Doctype .与 Comment 对象类似,这些类都是 NavigableString 的子类,只是添加了一些额外的方法的字符串独享.下面是用CDATA来替代注释的例子:
使用说明
搜索文档树
Beautiful Soup定义了很多搜索方法,这里着重介绍2个: find() 和 find_all() .其它方法的参数和用法类似,请读者举一反三
过滤器
介绍 find_all() 方法前,先介绍一下过滤器的类型 [3] ,这些过滤器贯穿整个搜索的API.过滤器可以被用在tag的name中,节点的属性中,字符串中或他们的混合中.
字符串
最简单的过滤器是字符串.在搜索方法中传入一个字符串参数,Beautiful Soup会查找与字符串完整匹配的内容,下面的例子用于查找文档中所有的标签
正则表达式
如果传入正则表达式作为参数,Beautiful Soup会通过正则表达式的 match() 来匹配内容.下面例子中找出所有以b开头的标签,这表示和标签都应该被找到
列表
如果传入列表参数,Beautiful Soup会将与列表中任一元素匹配的内容返回
∨ 展开