首页 > 其他分享 >爬虫之BeautifulSoup库的安装与使用

爬虫之BeautifulSoup库的安装与使用

时间:2024-03-31 21:13:17浏览次数:12  
标签:解析器 Beautiful lxml Python BeautifulSoup 爬虫 HTML 安装

一、BeautifulSoup 简介

Beautiful Soup是一个Python库,用于从HTML或XML文件中提取数据。它提供了一种简单而直观的方式来遍历、搜索和修改HTML或XML文档的结构。

Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了

另外,Beautiful Soup 3 目前已经停止开发,官网推荐在现在的项目中使用Beautiful Soup 4。

官方文档: https://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/

Beautiful Soup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,如果我们不安装它,则 Python 会使用 Python默认的解析器,lxml 解析器更加强大,速度更快,推荐安装。

解析器 使用方法 优势 劣势
Python标准库 BeautifulSoup(markup, "html.parser") Python的内置标准库 执行速度适中 文档容错能力强 Python 2.7.3 or 3.2.2)前 的版本中文档容错能力差
lxml HTML 解析器 BeautifulSoup(markup, "lxml") 速度快 文档容错能力强 需要安装C语言库
lxml XML 解析器 BeautifulSoup(markup, ["lxml", "xml"]) 或BeautifulSoup(markup, "xml") 速度快 唯一支持XML的解析器 需要安装C语言库
html5lib BeautifulSoup(markup, "html5lib") 最好的容错性 以浏览器的方式解析文档 生成HTML5格式的文档 速度慢 不依赖外部扩展

二、BeautifulSoup 安装

Beautiful Soup 3 目前已经停止开发,推荐在现在的项目中使用Beautiful Soup 4,不过它已经被移植到BS4了,也就是说导入时我们需要 import bs4。

1、安装Beautiful Soup

pip install beautifulsoup4

2、安装解析器

Beautiful Soup支持Python标准库中的HTML解析器,还支持一些第三方的解析器。

(1)内置解析器 html.parser

  • Beautiful Soup支持Python标准库中的HTML解析器,还支持一些第三方的解析器

  • 如果我们不安装它,则 Python 会使用 Python默认的解析器

soup=BeautifulSoup(页面源码,'html.parser') 

(2)第三方解析器 lxml

  • lxml 解析器更加强大,速度更快,推荐安装。
pip3 install lxml
  • 语法
soup=BeautifulSoup(页面源码,'lxml') 

(3)第三方解析器 html5lib

  • 另一个可供选择的解析器是纯Python实现的 html5lib

  • html5lib的解析方式与浏览器相同

  • 可以选择下列方法来安装html5lib

pip3 install html5lib
  • 语法
soup=BeautifulSoup(页面源码,'html5lib') 

三、BeautifulSoup 使用

1、首先必须要导入 bs4 库

from bs4 import BeautifulSoup

我们创建一个字符串,后面的例子我们便会用它来演示

html = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title" name="dromouse"><b>The Dormouse's story</b></p>
<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1"><!-- Elsie --></a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>
<p class="story">...</p>
"""

2、创建 BeautifulSoup 对象

  • 构造soup对象时,可以传入解析器参数
  • 如果不传入的话,会以最好的方式去解析

(1)方式一

# 直接放入 HTML 源码
soup = BeautifulSoup("<html>data</html>")   

(2)方式二

# 指定HTML源码文件,传入文件源码
soup = BeautifulSoup(open("index.html"))  

3、完整示例

# 导入所需第三方库
from bs4 import BeautifulSoup
 
# 这里先用一个简单的HTML数据为例
htmlData = """<html>
 <head> 
    <title>The Dormouse's story</title> 
 </head> 
 <body> 
  <p class="title"><b>The Dormouse's story</b></p> 
  <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a> 
 </body>
</html>"""
 
# 将字符串型的HTML数据转为beautifulsoup对象(指定解析器)
soup = BeautifulSoup(htmlData, "lxml")
print("转换结果为:", soup)
print("转换结果的类型为:", type(soup))
 
# 格式化输出HTML数据
htmlPrettify = soup.prettify()
print("格式化输出HTML数据:", htmlPrettify)
print("格式化输出HTML数据的类型:", type(htmlPrettify))
 
"""
转换结果为: <html>
<head>
<title>The Dormouse's story</title>
</head>
<body>
<p class="title"><b>The Dormouse's story</b></p>
<a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>
</body>
</html>
转换结果的类型为: <class 'bs4.BeautifulSoup'>
格式化输出HTML数据: <html>
 <head>
  <title>
   The Dormouse's story
  </title>
 </head>
 <body>
  <p class="title">
   <b>
    The Dormouse's story
   </b>
  </p>
  <a class="sister" href="http://example.com/tillie" id="link3">
   Tillie
  </a>
 </body>
</html>
格式化输出HTML数据的类型: <class 'str'>
"""

注意

1、BeautifulSoup()方法返回的是一个bs4.BeautifulSoup对象(该对象表示整个HTML数据),我们可以根据这个对象来使用不同的方法来获得HTML中我们需要的数据

2、在BeautifulSoup()方法中感觉最好指定解析器(使用lxml解析器),不然有时候会报错

3、上面例子中使用了prettify()方法:该方法用于格式化打印出获得的内容。这个函数经常用到所以要记住了

4、在控制台打印bs4.BeautifulSoup对象时,虽然其看起来像一个字符串。但其实际不是字符串。可以使用str()或prettify()方法来将bs4.BeautifulSoup对象转为字符串

标签:解析器,Beautiful,lxml,Python,BeautifulSoup,爬虫,HTML,安装
From: https://www.cnblogs.com/xiao01/p/18104294

相关文章

  • 爬虫之requests模块响应
    一、request模块的响应1、响应头中最常见的一些内容Content-Type:指示响应正文的媒体类型,例如text/html、application/json等。Content-Length:指示响应正文的长度(以字节为单位)。Date:指示响应生成的日期和时间。Server:指示响应的服务器软件名称和版本号。Set-Cookie:用于设......
  • 爬虫之BeautifulSoup四大对象
    一、四大对象种类1、简介BeautifulSoup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种:对象名描述BeautifulSoup文档自身:表示的是一个文档的全部内容Tag标签对:Tag对象与XML或HTML原生文档中的tag相同,即标签对NavigableS......
  • 爬虫之BeautifulSoup文档树操作
    一、遍历文档树介绍1、简介在BeautifulSoup中,遍历文档树是指访问和操作HTML或XML文档的各个部分,包括标签、字符串内容等。遍历文档树,也被称为导航文档树,是指在一个文档对象模型(DOM)中按照特定的方法和规则来遍历和浏览其中的节点。DOM是一种处理XML或HTML文档的标准编程接口,......
  • 抖音视频无水印批量下载软件|视频关键词爬虫提取工具
    抖音视频无水印批量下载软件,轻松获取你想要的视频内容!    想要快速获取抖音上的视频内容吗?现在推出的抖音视频无水印批量下载软件将帮助你实现这一愿望!主要功能包括关键词批量提取视频和单独视频提取,让你轻松下载喜欢的视频内容。主要功能解析:1.关键词批量提取视频......
  • 爬虫工作量由小到大的思维转变---<第六十四章 > Scrapy利用Bloom过滤器增强爬虫的页面去
    前言:        网络爬虫系统是信息时代获取和管理网络数据的重要工具,广泛应用于搜索引擎索引、数据聚合、在线研究等领域。随着网络信息的海量增长,爬虫系统不可避免地会面临重复内容的爬取问题。这不仅浪费了计算资源和网络带宽,而且还会降低数据处理的效率,并可能引起网......
  • Windows安装DevEco Studio
    1.在https://developer.harmonyos.com网站上注册账号;2.下载DevEcoStudio安装文件,选择Windows64位版本;3.运行安装文件,开始安装;4.选择Donotimportsettings;5.运行DevEcoStudio,安装Node.js和Ohpm;6.下载SDK; 7.创建一个鸿蒙项目,等待下载Gradle;8.......
  • CleanMyMac X最新4.15.2中文破解版安装包下载
    CleanMyMacX4.15.2的更新内容非常全面,涵盖了功能增强、性能优化以及界面设计改进等多个方面。这款专为macOS系统设计的清理和优化工具,通过此次更新进一步提升了用户体验和系统性能。CleanMyMacX2024全新版下载如下:https://wm.makeding.com/iclk/?zoneid=49983首先,从功......
  • ubuntu20.04 安装 cuda12.1
    1、thisisimportance.sudoapt-getinstalllibc-devlibc6-devsudoapt-getinstalllibc-devlibc6-devgccg++makesudoapt-getinstallinitramfs-tools   2sudovi/etc/modprobe.d/blacklist.conf blacklistnouveauoptionsnouveaumodeset=0 sudo......
  • 爬虫案例
    BS爬取笔趣阁小说数据#-*-coding:utf-8-*-#author:heart#blog_url:https://www.cnblogs.com/ssrheart/#time:2024/3/30importrandomimporttimeimportrequestsfromfake_useragentimportUserAgentfrombs4importBeautifulSoupimportosheaders=......
  • 爬虫介绍
    Python爬虫(1)介绍Python爬虫是一种自动化获取互联网数据的技术,它通过编写程序实现自动访问网站并抓取所需的数据。爬虫是一种自动化获取互联网数据的技术,通过模拟浏览器行为,向目标网站发送请求并获取响应,然后解析响应中的数据。(2)爬虫的常用库(1)requests用于发送HTTP请......