每日一模块——BeautifulSoup4

简介: 每日一模块——BeautifulSoup4

BeautifulSoup是一个可以从HTML或XML文件中提取数据的python库。


“Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。


Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。


Beautiful Soup已成为和lxml、html6lib一样出色的python解释器,为用户灵活地提供不同的解析策略或强劲的速度。”


创建本地文件index.html,写入如下


1、读取内容,格式化输出


import bs4
soup = bs4.BeautifulSoup(open('E:\indext.html'), 'html.parser') # this is the path of index.html
# open index.html, and create a object soup
print (soup.prettify())
# format and print


2、四大对象种类


  • Tag
  • NavigableString
  • BeautifulSoup
  • Comment


(1)Tag:标签

<title>hello</titile> <a>world</a>......

上面的每一个色块就构成了一个标签,也就是说标签除了HTML标签,还包括中间的内容。

如何获取标签呢?

我们可以这样写:(蓝色背景的为输出)

print soup.p
<p class="title" name="dromouse"><b>The Dormouse's story</b></p>

虽然HTML内容中有好些个p标签,但是这种形式的调用,只会输出所有内容中第一个符合要求的标签

对象的类型可以通过type获得,即:

print type(soup.p)
<class 'bs4.element.Tag'>


对于Tag, 它有两个重要的属性,name 和 attrs

print soup.name
print soup.p.name
[doucument]
p

soup对象本身比较特殊,它的name即为[document],对于其他内部标签,输出的值便为标签本身的名称。

print soup.p.attrs
{u'class': [u'title'], u'name': u'dromouse'}

p标签的所有属性打印出来,得到的类型是一个字典


如果想要单独获取某个属性,可以给定属性名称

print(soup.p['class']) or print soup.p.get('class')
[u'title']

对属性和内容进行修改

soup.p['class'] = 'newClass'
print soup.p
<p class="newClass" name="dromouse"><b>The Dormouse's story</b></p>

对属性进行删除

del soup.p['class']
<p name="dromouse"><b>The Dormouse's story</b></p>


(2)NavigableString


上面介绍了获取标签内容,而.string可以获得标签内部的文字

print soup.p.string
The Dormouse's story

类型是NavigableString,同样可以通过type获得


(3)BeautifulSoup


BeautifulSoup对象表示的是一个文档的全部内容,大部分时候,可以把它当做Tag对象,是一个特殊的Tag

print type(soup.name)
<type 'unicode'>


(4)Comment


comment对象是一个特殊类型的NavigableString对象,其实输出的内容仍然不包括注释符号,但是如果不好好处理,可能会给我们的文本处理造成麻烦

print type(soup.p.string)
print type(soup.a.string)
print soup.a.string
<class 'bs4.element.NavigableString'>
<class 'bs4.element.Comment'>
 Elsie

可以看到soup.a.string是comment类型,并且其中的注释符号被去掉了,这会带来麻烦。


所以这样的情况,我们需要事先做下判断:if type(soup.a.string) == bs4.element.comment:


相关文章
|
2月前
|
XML 数据格式 开发者
解析数据的Beautiful Soup 模块(一)
解析数据的Beautiful Soup 模块(一)
75 0
|
2月前
|
XML 数据采集 API
MechanicalSoup与BeautifulSoup的区别分析
MechanicalSoup与BeautifulSoup的区别分析
49 2
MechanicalSoup与BeautifulSoup的区别分析
|
2月前
|
前端开发 Python
解析数据的Beautiful Soup 模块(二)
解析数据的Beautiful Soup 模块(二)
25 1
|
7月前
|
XML 数据格式
Beautiful Soup 库提供了许多常用的方法
【5月更文挑战第10天】Beautiful Soup库用于HTML/XML文档解析和操作,提供初始化、查找、提取信息及修改文档的方法。如:find()和find_all()查找元素,.string或.get_text()获取文本,.attrs获取属性,.append()、.insert()、.remove()、.replace_with()、.unwrap()和.wrap()修改文档结构。还有.prettify()格式化输出,.encode()和.decode()处理编码。这些功能组合使用可灵活处理文档信息。
42 1
WK
|
3月前
|
XML 前端开发 API
Beautiful Soup有哪些支持功能
Beautiful Soup是一个强大的Python库,用于从HTML或XML文件中提取数据。它支持多种解析器,如html.parser、lxml和html5lib,能灵活应对不同格式的文档。通过丰富的API,可以轻松遍历解析树,按标签名、属性或字符串内容搜索和提取数据。此外,Beautiful Soup还支持简单的树修改操作,处理不同编码的文档,并具备良好的容错性。从4.0版本起,它引入了CSS选择器,使搜索更加便捷。详尽的官方文档和广泛的社区支持使其成为处理网页数据的理想选择。
WK
54 1
WK
|
3月前
|
XML 移动开发 数据格式
Beautiful Soup支持哪些解析器
Beautiful Soup是一款强大的库,用于解析HTML和XML文档。它支持多种解析器,包括Python标准库中的`html.parser`、lxml的HTML和XML解析器以及html5lib。`html.parser`无需额外安装,但速度较慢;lxml则基于C语言,速度快且支持XPath;html5lib则完全支持HTML5标准,容错性好但速度较慢。用户可通过`features`参数指定解析器,选择最适合需求的解析器可提升效率与准确性。
WK
257 2
|
7月前
|
XML 数据格式
Beautiful Soup 库有哪些常用的方法
Beautiful Soup 库有哪些常用的方法
136 1
|
数据采集 前端开发 测试技术
Beauiful Soup
Beautiful Soup的简单使用
BeautifulSoup的基本使用
要使用BeautifulSoup4需要先安装lxml,再安装bs4
BeautifulSoup的基本使用

热门文章

最新文章