每日一模块——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 库提供了许多常用的方法
【5月更文挑战第10天】Beautiful Soup库用于HTML/XML文档解析和操作,提供初始化、查找、提取信息及修改文档的方法。如:find()和find_all()查找元素,.string或.get_text()获取文本,.attrs获取属性,.append()、.insert()、.remove()、.replace_with()、.unwrap()和.wrap()修改文档结构。还有.prettify()格式化输出,.encode()和.decode()处理编码。这些功能组合使用可灵活处理文档信息。
25 1
|
1月前
|
数据采集 Web App开发 安全
Beautiful Soup和Requests
【5月更文挑战第7天】本文介绍了使用Python中的Requests和Beautiful Soup库创建网络爬虫的方法。Requests库简化了HTTP请求,Beautiful Soup则用于解析HTML和XML文档,便于提取信息。首先,文章解释了两个库的作用和安装步骤。接着,通过实例展示了如何提取网页标题和链接,以及如何下载并保存图片。对于动态加载的内容,文章推荐使用Selenium库模拟浏览器行为。此外,还介绍了如何处理登录认证,包括安全输入密码和从外部文件读取凭据。总结来说,本文提供了Python网络爬虫的基础知识和实用技巧。
38 6
|
29天前
|
数据采集 XML 前端开发
Python爬虫:BeautifulSoup
这篇内容介绍了Python中BeautifulSoup库的安装和使用。首先,通过在命令行输入`pip install bs4`进行安装,或使用清华源加速。接着讲解BeautifulSoup的基本概念,它是一个用于数据解析的工具,便于处理HTML和XML文档。与正则表达式不同,BeautifulSoup提供更方便的方式来查找和操作标签及其属性。 文章详细阐述了BeautifulSoup的两个主要方法:`find`和`find_all`。`find`方法用于查找单个指定标签,可结合属性字典进行精确选择;`find_all`则返回所有匹配标签的列表。通过这些方法,可以方便地遍历和提取网页元素。
31 0
|
1月前
|
XML 数据格式
Beautiful Soup 库有哪些常用的方法
Beautiful Soup 库有哪些常用的方法
22 1
|
6月前
|
XML API 数据格式
Beautiful Soup
Beautiful Soup 是一个用于从网页中提取数据的 Python 库。它可以帮助用户轻松地解析 HTML 和 XML 文档,并从中提取所需的信息。Beautiful Soup 基于 Python 的标准库,因此无需安装任何额外的依赖包即可使用。
51 7
|
XML 数据格式 Python
|
数据采集 前端开发 测试技术
BeautifulSoup的基本使用
要使用BeautifulSoup4需要先安装lxml,再安装bs4
51 0
BeautifulSoup的基本使用
|
Python
Beautiful Soup库的介绍
本节中将介绍如何使用 Beautiful Soup 来解析 HTML 以获取我们想要的信息。
84 0
|
Web App开发
BeautifulSoup库用法总结
0.写在前面 在python的爬虫中,经常需要用到强大的beautifulsoup库,如之前写的股票数据的爬取中就用到了它。在这里,将详细总结beautifulsoup的用法,来巩固相关知识。
1468 0