第14.8节 Python中使用BeautifulSoup加载HTML报文
一、 引言
BeautifulSoup是一个三方模块bs4中提供的进行HTML解析的类,可以认为是一个HTML解析工具箱,对HTML报文中的标签具有比较好的容错识别功能。阅读本节需要了解html相关的基础知识,如果这方面知识不足请参考《第14.2节 HTML知识简介》。
二、 BeautifulSoup安装、导入和创建对象
安装BeautifulSoup和lxml
BeautifulSoup是bs4模块的类,lxml是一款html文本解析器,在操作系统命令行方式执行安装bs4模块和lxml解析器模块的命令:
pip install bs4
pip install lxml加载BeautifulSoup所在模块
因为BeautifulSoup是bs4模块提供的一个类,一般导入时使用:
from bs4 import BeautifulSoup定义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__详解》
- 使用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报文的更多相关文章
- 第14.10节 Python中使用BeautifulSoup解析http报文:html标签相关属性的访问
一. 引言 在<第14.8节 Python中使用BeautifulSoup加载HTML报文>中介绍使用BeautifulSoup的安装.导入和创建对象的过程,本节介绍导入后利用Beauti ...
- 第14.12节 Python中使用BeautifulSoup解析http报文:使用select方法快速定位内容
一. 引言 在<第14.10节 Python中使用BeautifulSoup解析http报文:html标签相关属性的访问>和<第14.11节 Python中使用BeautifulSo ...
- 第14.11节 Python中使用BeautifulSoup解析http报文:使用查找方法快速定位内容
一. 引言 在<第14.10节 Python中使用BeautifulSoup解析http报文:html标签相关属性的访问>介绍了BeautifulSoup对象的主要属性,通过这些属性可以访 ...
- 第14.9节 Python中使用urllib.request+BeautifulSoup获取url访问的基本信息
利用urllib.request读取url文档的内容并使用BeautifulSoup解析后,可以通过一些基本的BeautifulSoup对象输出html文档的基本信息.以博文<第14.6节 使用 ...
- Python 中 unittest 框架加载测试用例的常用方法
unittest 当中为我们提供了许多加载用例的方法,这里说下常用的两种方法...推荐使用第二种 第一种加载测试用例的方法:使用加载器加载两个模块 需要把所有的模块加载到套件中 那么就可以自动的运行所 ...
- 第7.22节 Python中使用super调用父类的方法
第7.22节 Python中使用super调用父类的方法 前面章节很多地方都引入了super方法,这个方法就是访问超类这个类对象的.由于super方法的特殊性,本节单独谈一谈super方法. 一.su ...
- 第14.7节 Python模拟浏览器访问实现http报文体压缩传输
一. 引言 在<第14.6节 Python模拟浏览器访问网页的实现代码>介绍了使用urllib包的request模块访问网页的方法.但上节特别说明http报文头Accept-Encodin ...
- 第7.19节 Python中的抽象类详解:abstractmethod、abc与真实子类
第7.19节 Python中的抽象类详解:abstractmethod.abc与真实子类 一. 引言 前面相关的章节已经介绍过,Python中定义某种类型是以实现了该类型对应的协议为标准的,而不 ...
- 第7.15节 Python中classmethod定义的类方法详解
第7.15节 Python中classmethod定义的类方法详解 类中的方法,除了实例方法外,还有两种方法,分别是类方法和静态方法.本节介绍类方法的定义和使用. 一. 类方法的定义 在类中定 ...
随机推荐
- c#分割
Hashtable h = new Hashtable(); ArrayList l = new ArrayList(); string[] lines = System.IO.File.ReadAl ...
- leetcode111:combination-sum
题目描述 给出一组候选数C和一个目标数T,找出候选数中加起来和等于T的所有组合. C中的数字在组合中可以被无限次使用 注意: 题目中所有的数字(包括目标数T)都是正整数 你给出的组合中的数字 (a 1 ...
- leetcode148two-sum
Given an array of integers, find two numbers such that they add up to a specific target number. The ...
- mysql查询上月天数/当月第一天/上月第一天
select (DATEDIFF(DATE_ADD(curdate(), INTERVAL - DAY(curdate())+ 1 DAY), date_add(curdate()- DAY(curd ...
- 【webSokect】基于django Channels的简单实现
# settings.py: INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.con ...
- NO.A.0009——day04——idea的安装及配置教程
概述: 集成开发环境:IDE.开发工具Integrated Development Environment,IDE, 1.如果自己手洗衣服: 1. 准备一盆水 2. 放入衣服浸泡30分钟 3. 搓洗衣 ...
- Ceph的Mon数据重新构建工具
关于mon的数据的问题,一般正常情况下都是配置的3个mon的,但是还是有人会担心 Mon 万一三个同时都挂掉了怎么办,那么集群所有的数据是不是都丢了,关于后台真实数据恢复,有去后台取对象,然后一个个拼 ...
- SQL SERVER数据库Left Join用法
Left Join基本语法: SQL LEFT JOIN 关键字 LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的 ...
- java的常用定时任务的几种方式
Java基本的定时任务,一般有这几种方式:一.Timer 1 public class Timer{ 2 static int index=0; 3 public static void main(S ...
- guitar pro系列教程(二十一):Guitar Pro在乐谱上的工作【一】
当我们使用Guitar Pro写好一首乐谱之后,通常在乐谱上还会有哪些操作呢?对于刚接触{cms_selflink page='index' text='Guitar Pro'}的朋友们肯定还是不熟悉 ...