zoukankan      html  css  js  c++  java
  • 第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:	emps1.html',encoding='utf-8')
    >>> buf = fp.read()
    >>> soup = BeautifulSoup(buf, ' lxml ')
    

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

    >>> from bs4 import BeautifulSoup
    >>> fp = open(r'c:	emps1.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
    请大家多多支持,点赞、评论和加关注!谢谢!

  • 相关阅读:
    取指定长度的字符串(包括中英文),以"..."的方式显示
    js 常用函数
    js 规范
    js高级编程笔记2
    js高级编程笔记
    WinJS开发div中元素的水平和垂直居中metro
    WinJS开发iframe中Javascript执行错误metro
    MySql乱码
    正则表达式符号系统
    Java替换字符串中的回车换行
  • 原文地址:https://www.cnblogs.com/LaoYuanPython/p/13643575.html
Copyright © 2011-2022 走看看