一、 引言

BeautifulSoup是一个三方模块bs4中提供的进行HTML解析的类,可以认为是一个HTML解析工具箱,对HTML报文中的标签具有比较好的容错识别功能。阅读本节需要了解html相关的基础知识,如果这方面知识不足请参考《第14.2节 HTML知识简介》。

二、 BeautifulSoup安装、导入和创建对象

  1. 安装BeautifulSoup和lxml

    BeautifulSoup是bs4模块的类,lxml是一款html文本解析器,在操作系统命令行方式执行安装bs4模块和lxml解析器模块的命令:

    pip install bs4

    pip install lxml

  2. 加载BeautifulSoup所在模块

    因为BeautifulSoup是bs4模块提供的一个类,一般导入时使用:

    from bs4 import BeautifulSoup

  3. 定义BeautifulSoup实例对象

    BeautifulSoup类的构造方法提供6个参数并支持更多动态参数扩展,一般使用时构造BeautifulSoup类的实例时,传入前2个参数,第一个参数是要解析的html文本字符串或使用open函数打开的html文件,第二个参数是html解析器名字,参数值包括如”html.parser”,”lxml”,”html5lib”、“lxml-xml”。

    BeautifulSoup支持Python标准库中的HTML解析器html.parser,还支持一些第三方的解析器如lxml、lxml-xml、html5lib,如果我们不安装第三方的解析器,则 Python 会使用 Python默认的标准库内置解析器html.parser,官方推荐使用lxml 解析器,因为lxml 解析器更加强大,支持xml解析,速度更快。

    案例:

1)对文本字符串进行解析

>>> from bs4 import BeautifulSoup
>>> fp = open(r'c:\temp\s1.html',encoding='utf-8')
>>> buf = fp.read()
>>> soup = BeautifulSoup(buf, ' lxml ')

2)对文件对象直接进行解析

>>> from bs4 import BeautifulSoup
>>> fp = open(r'c:\temp\s1.html',encoding='utf-8')
>>> soup = BeautifulSoup(fp, 'lxml')

返回的实例对象soup可以通过print打印出html文本,为什么一个类可以通过print打印出来?这个请参考《第8.14节 Python类中内置方法__str__详解

  1. 使用prettify查看解析报文对应的格式化后的html报文
>>> print(soup.prettify())
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<style type="text/css">
.textline{color:blue;}
</style>
<link href="https://blog.csdn.net/LaoYuanPython/article/details/95360624" rel="canonical"/>
<title>
BeautifulSoups使用方法 - 老猿Python - CSDN博客
</title>
</head>
<body>
<h1>
老猿Python
</h1>
<div>
<p class="textline" name="line1">
老猿Python首行
</p>
</div>
<div>
<h2>
老猿Python第二行
<a href="https://blog.csdn.net/LaoYuanPython">
</a>
</h2>
<h3>
<b>
老猿Python第三行
</b>
<a href="https://blog.csdn.net/LaoYuanPython">
</a>
</h3>
</div>
</body>
</html>
>>>

本节介绍了使用BeautifulSoup的安装、导入和创建对象的过程,并可以将对应html报文通过BeautifulSoup对象展示和格式化。后续《第14.9节 Python中使用urllib.request+BeautifulSoup获取url访问的基本信息》将介绍相关数据的基本使用方法。

老猿Python,跟老猿学Python!

博客地址:https://blog.csdn.net/LaoYuanPython


老猿Python博客文章目录:https://blog.csdn.net/LaoYuanPython/article/details/98245036

请大家多多支持,点赞、评论和加关注!谢谢!

第14.8节 Python中使用BeautifulSoup加载HTML报文的更多相关文章

  1. 第14.10节 Python中使用BeautifulSoup解析http报文:html标签相关属性的访问

    一. 引言 在<第14.8节 Python中使用BeautifulSoup加载HTML报文>中介绍使用BeautifulSoup的安装.导入和创建对象的过程,本节介绍导入后利用Beauti ...

  2. 第14.12节 Python中使用BeautifulSoup解析http报文:使用select方法快速定位内容

    一. 引言 在<第14.10节 Python中使用BeautifulSoup解析http报文:html标签相关属性的访问>和<第14.11节 Python中使用BeautifulSo ...

  3. 第14.11节 Python中使用BeautifulSoup解析http报文:使用查找方法快速定位内容

    一. 引言 在<第14.10节 Python中使用BeautifulSoup解析http报文:html标签相关属性的访问>介绍了BeautifulSoup对象的主要属性,通过这些属性可以访 ...

  4. 第14.9节 Python中使用urllib.request+BeautifulSoup获取url访问的基本信息

    利用urllib.request读取url文档的内容并使用BeautifulSoup解析后,可以通过一些基本的BeautifulSoup对象输出html文档的基本信息.以博文<第14.6节 使用 ...

  5. Python 中 unittest 框架加载测试用例的常用方法

    unittest 当中为我们提供了许多加载用例的方法,这里说下常用的两种方法...推荐使用第二种 第一种加载测试用例的方法:使用加载器加载两个模块 需要把所有的模块加载到套件中 那么就可以自动的运行所 ...

  6. 第7.22节 Python中使用super调用父类的方法

    第7.22节 Python中使用super调用父类的方法 前面章节很多地方都引入了super方法,这个方法就是访问超类这个类对象的.由于super方法的特殊性,本节单独谈一谈super方法. 一.su ...

  7. 第14.7节 Python模拟浏览器访问实现http报文体压缩传输

    一. 引言 在<第14.6节 Python模拟浏览器访问网页的实现代码>介绍了使用urllib包的request模块访问网页的方法.但上节特别说明http报文头Accept-Encodin ...

  8. 第7.19节 Python中的抽象类详解:abstractmethod、abc与真实子类

    第7.19节 Python中的抽象类详解:abstractmethod.abc与真实子类 一.    引言 前面相关的章节已经介绍过,Python中定义某种类型是以实现了该类型对应的协议为标准的,而不 ...

  9. 第7.15节 Python中classmethod定义的类方法详解

    第7.15节  Python中classmethod定义的类方法详解 类中的方法,除了实例方法外,还有两种方法,分别是类方法和静态方法.本节介绍类方法的定义和使用. 一.    类方法的定义 在类中定 ...

随机推荐

  1. MYSQL字段

    这里我的测试环境是wampserver 选择数据库 选择表 或者创建数据库和表 SHOW DATABASES; 查看数据库 CREATE DATABASE 数据库名; 创建数据库 在 MySQL 中, ...

  2. 9 HTTP和HTTPS

    9 HTTP和HTTPS 状态码 定义 1xx 报告 接收到请求,继续进程 2xx 成功 步骤成功接收,被理解,并被接受 3xx 重定向 为了完成请求,必须采取进一步措施 4xx 客户端出错 请求包括 ...

  3. JIRA、Confluence等产品明年2月停售本地化版本,将影响中国近90%的客户!

    作为目前应用最为广泛的软件开发管理软件,JIRA.Confluence等产品几乎被所有的科技型公司所应用.我们的每天的任务管理.文档编写等工作几乎都在这些软件的帮助下进行和管理.当然我也不例外,在读书 ...

  4. Java 中数组转换为 List

    目录 1 - int 型数组转换为 List 2 - List 转换为 int 型数组 3 - String 型数组转换为 List 4 - List 转换为 String 型数组 版权声明 开发中经 ...

  5. 手写@koa/router源码

    上一篇文章我们讲了Koa的基本架构,可以看到Koa的基本架构只有中间件内核,并没有其他功能,路由功能也没有.要实现路由功能我们必须引入第三方中间件,本文要讲的路由中间件是@koa/router,这个中 ...

  6. 运维和shell

    什么是运维 术语名词 IDC--(Internet Data Center)互联网数据中心,主要服务包括整机租用.服务器托管.机柜租用.机房租用.专线接入和网络管理服务等.广义上的IDC业务,实际上就 ...

  7. Python_自动化测试_项目

    <论坛自动化测试项目> 1.自行选择合适的社区 2.功能要求 5个以上,不包含登录页 3.多手动测试   多用selenium IDE 4.生成测试报告,发送邮件 5.计划任务定时完成 6 ...

  8. CSS 常用列表样式

    CSS 常用列表样式 CSS没学扎实,复习记录一下.下面是一些常用的属性 list-style-image 指定一个图片作为列表项的标记 默认值none,可设置为图片的url list-style-i ...

  9. Cassandra存储附带索引(SAI)全新上线

    新一代Apache Cassandra索引现已在Astra和DataStax Enterprise 6.8.3中正式开放使用 (general availability or GA),很快您也将在开源 ...

  10. phpmyadmin远程代码执行漏洞(CVE-2016-5734)

    简介 环境复现:https://github.com/vulhub/vulhub 线上平台:榆林学院内可使用协会内部的网络安全实验平台 phpMyAdmin是一套开源的.基于Web的MySQL数据库管 ...