每日一模块——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:


相关文章
|
1月前
|
XML 数据格式 开发者
解析数据的Beautiful Soup 模块(一)
解析数据的Beautiful Soup 模块(一)
|
1月前
|
XML 数据采集 API
MechanicalSoup与BeautifulSoup的区别分析
MechanicalSoup与BeautifulSoup的区别分析
MechanicalSoup与BeautifulSoup的区别分析
|
1月前
|
前端开发 Python
解析数据的Beautiful Soup 模块(二)
解析数据的Beautiful Soup 模块(二)
|
6月前
|
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()处理编码。这些功能组合使用可灵活处理文档信息。
38 1
WK
|
2月前
|
XML 前端开发 API
Beautiful Soup有哪些支持功能
Beautiful Soup是一个强大的Python库,用于从HTML或XML文件中提取数据。它支持多种解析器,如html.parser、lxml和html5lib,能灵活应对不同格式的文档。通过丰富的API,可以轻松遍历解析树,按标签名、属性或字符串内容搜索和提取数据。此外,Beautiful Soup还支持简单的树修改操作,处理不同编码的文档,并具备良好的容错性。从4.0版本起,它引入了CSS选择器,使搜索更加便捷。详尽的官方文档和广泛的社区支持使其成为处理网页数据的理想选择。
WK
39 1
WK
|
2月前
|
XML 数据采集 数据挖掘
什么是Beautiful Soup?有哪些特点?
Beautiful Soup,常被称为“美丽汤”,是用于解析HTML和XML文档的Python库,能自动修复不规范的标签,便于遍历、搜索及修改文档结构,适用于网页爬虫和数据采集。它提供直观的方法来处理文档,支持多种解析器,具备强大的搜索功能,包括find()和find_all()等方法,并兼容CSS选择器,简化了数据提取过程。广泛应用于网页爬虫、数据挖掘及网页内容分析等领域。
WK
122 1
|
3月前
|
数据采集 XML 前端开发
BeautifulSoup
【8月更文挑战第18天】
48 1
|
3月前
|
前端开发 Python
Beautiful Soup
【8月更文挑战第4】
58 9
|
6月前
|
XML 数据格式
Beautiful Soup 库有哪些常用的方法
Beautiful Soup 库有哪些常用的方法
105 1
|
XML 数据格式 Python