BeautifulSoup应用笔记(1)- 解析器及对象类型

原创 2015年11月20日 10:23:28

解析器

BeautifulSoup支持Python标准库中的HTML解析器(html.parser),还支持一些第三方的解析器,如:lxml、html5lib,官方推荐使用lxml(优势:速度快、支持xml)作为解析器。如果没有配置解析器,BeautifulSoup会根据系统安装的库自动选择解析器,因此最好注明使用哪种解析器,避免不同环境执行结果不一致。

经过实践,html5lib的兼容性最佳,html.parser和lxml无法正确解析的复杂的html文档(包含多个iframe框架,应用find_all("iframe")获取的结果数量少于实际的数量),换为html5lib后可以正确解析。

解析器的使用方法:

BeautifulSoup(markup, "lxml")

对象类型

BeautifulSoup对象类型包括BeautifulSoup,Tag,NavigableString,Comment。

示例如下:

from bs4 import BeautifulSoup

html_doc = """
<html>
<head><title>The Dormouse's story</title></head>
<body>
<b><!--Hey, buddy. Want to buy a used parser?--></b>
<p class="title"><b>The Dormouse's story</b></p>

<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>

<p class="story">...</p>
"""

soup=BeautifulSoup(html_doc)
tag=soup.title
string=tag.string
comment=soup.b.string

print type(soup)    # <class 'bs4.BeautifulSoup'>
print type(tag) 	# <class 'bs4.element.Tag'>
print type(string)  # <class 'bs4.element.NavigableString'>
print type(comment) # <class 'bs4.element.Comment'>


 备注:

详细文档可参考官方文档:http://www.crummy.com/software/BeautifulSoup/bs4/doc/

版权声明:本文为博主的原创文章,欢迎转载,但请注明出处,谢谢!

相关文章推荐

BeautifulSoup中各种html解析器的比较及使用

Beautiful Soup支持各种html解析器,包括python自带的标准库,还有其他的许多第三方库模块。其中一个就是lxml parser,另外一种纯python解析器为html5lib解析器,...

Python爬虫----网页解析器和BeautifulSoup第三方模块

网页解析器:从网页中提取有价值数据的工具

Python爬虫包 BeautifulSoup 学习(四) bs基本对象与函数

四大对象种类BeautifulSoup将复杂HTML文档转换成一个复杂的树形结构。如图所示每个节点都是Python对象,我们只用根据节点进行查询就可以了,因为解析工作交给了框架本身。所有对象可以归纳为...

使用 Beautiful Soup 解析网页内容

安装Beautiful SoupBeautiful Soup是一个Python的HTML解析框架,我们可以利用它方便的处理HTML和XML文档。Beautiful Soup有3和4两个版本,目前3已经...

给定A, B两个整数,不使用除法和取模运算,求A/B的商和余数

给定A, B两个整数,不使用除法和取模运算,求A/B的商和余数。 1.   最基本的算法是,从小到大遍历: for (i = 2 to A -1)          if (i * B > A)...

利用K-means聚类算法根据经纬度坐标对中国省市进行聚类

K-means聚类算法是一种非层次聚类算法,在最小误差的基础上将数据划分了特定的类,类间利用距离作为相似度指标,两个向量之间的距离越小,其相似度就越高。程序读取全国省市经纬度坐标,然后根据经纬度坐标进...

Radon变换理论介绍与matlab实现--经验交流

本人最近在研究Radon变换,在查阅了各种资料之后在此写下个人的理解,希望与各位牛牛进行交流共同进步,也使得理解更加深刻些。 Radon变换的本质是将原来的函数做了一个空间转换,即,将原来的XY平...

CT图像重建技术

由于csdn贴图不方便,并且不能上传附件,我把原文上传到了资源空间CT图像重建技术 1.引言 计算机层析成像(Computed Tomography,CT)是通过对物体进行不同角度的射线投影测量而...

Matlab绘图-很详细,很全面

Matlab绘图强大的绘图功能是Matlab的特点之一,Matlab提供了一系列的绘图函数,用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形,这类函数称为高层绘图函数。此外,Ma...

linux查找目录下的所有文件中是否含有某个字符串

查找目录下的所有文件中是否含有某个字符串  find .|xargs grep -ri "IBM"  查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名  find .|xargs g...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:BeautifulSoup应用笔记(1)- 解析器及对象类型
举报原因:
原因补充:

(最多只允许输入30个字)