第14.8节 Python中使用BeautifulSoup加载HTML报文

一、 引言
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
请大家多多支持,点赞、评论和加关注!谢谢!

上一篇:python – 使用BeautifulSoup从`img`标签中提取`src`属性


下一篇:jquery中remove()与detach()的区别