Python网页抓取工具Beautiful Soup面面观!

2023-12-01 01:32

本文主要是介绍Python网页抓取工具Beautiful Soup面面观!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据。提供一些简单的、python式的函数,用来处理导航、搜索、修改分析树等功能。


Beautiful Soup是一个工具箱,通过解析文档为用户提供需要抓取的数据。因为简单,所以不需要多少代码,就可以写出一个完整的应用程序。


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


Beautiful Soup已成为和lxml、html6lib一样出色的python解释器,为用户灵活地提供不同的解析策略或强劲的速度。


Beautiful Soup 安装


Beautiful Soup 3 目前已经停止开发,推荐在现在的项目中使用Beautiful Soup 4,不过它已经被移植到BS4了,也就是说导入时需要import bs4 。如果你用的是新版的Debain或Ubuntu,那么可以通过系统的软件包管理来安装。


Beautiful Soup支持Python标准库中的HTML解析器,还支持一些第三方的解析器。如果不安装它,则Python 会使用Python默认的解析器


创建Beautiful Soup 对象


首先必须要导入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>


"""


创建beautifulsoup对象


soup = BeautifulSoup(open('index.html'))


另外,还可以用本地HTML 文件来创建对象,例如


print soup.prettify()


上面这句代码,便是将本地index.html 文件打开,用它来创建soup 对象


下面来打印一下soup 对象的内容,格式化输出


print soup.prettify()


Beautiful Soup对象种类


Beautiful Soup将复杂HTML文档,转换成一个复杂的树形结构。


每个节点都是Python对象,所有对象可以归纳为4种:


(1)Tag


Tag 其实就是HTML 中的一个个标签


例如


<title>The Dormouse's story</title>


&lt;aclass="sister" href="http://example.com/elsie" id="link1"&gt;Elsie&lt;/a&gt;


上面的title 、a 等等HTML 标签加上里面包括的内容就是Tag,用Beautiful Soup 来获取Tags


print soup.title


print soup.head


print soup.a


print soup.p


print type(soup.a)


print soup.name


print soup.head.name


(2)NavigableString


如果已经得到了标签的内容,要想获取标签内部的文字怎么办?


用.string 获取内部文字


print soup.p.string


它的类型是一个NavigableString,其意思是可以遍历的字符串。


(3)BeautifulSoup


BeautifulSoup对象,表示的是一个文档的全部内容


很多时候可以把它当作一个特殊的Tag 对象


可以分别获取它的类型,名称,以及属性


print type(soup.name)


print soup.name


print soup.attrs


(4)Comment


Comment对象是一特殊类型NavigableString对象,输出的内容仍不包括注释符号


如果它处理不好,可能会对文本处理造成意想不到的麻烦。


找一个带注释的标签


print soup.a


print soup.a.string


print type(soup.a.string)


<a class="sister"href="http://example.com/elsie"id="link1"><!--Elsie--></a>


Elsie


<class'bs4.element.Comment'>


a 标签里的内容实际上是注释,但是如果用.string 来输出它的内容,会发现它已经把注释符号去掉了,所以这可能会给带来不必要的麻烦。


另外打印输出它的类型,发现它是一个Comment 类型,在使用前最好做一下判断


iftype(soup.a.string)==bs4.element.Comment:


print soup.a.string

这篇关于Python网页抓取工具Beautiful Soup面面观!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/439314

相关文章

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

SQLite3命令行工具最佳实践指南

《SQLite3命令行工具最佳实践指南》SQLite3是轻量级嵌入式数据库,无需服务器支持,具备ACID事务与跨平台特性,适用于小型项目和学习,sqlite3.exe作为命令行工具,支持SQL执行、数... 目录1. SQLite3简介和特点2. sqlite3.exe使用概述2.1 sqlite3.exe

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

python常见环境管理工具超全解析

《python常见环境管理工具超全解析》在Python开发中,管理多个项目及其依赖项通常是一个挑战,下面:本文主要介绍python常见环境管理工具的相关资料,文中通过代码介绍的非常详细,需要的朋友... 目录1. conda2. pip3. uvuv 工具自动创建和管理环境的特点4. setup.py5.

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

Python UV安装、升级、卸载详细步骤记录

《PythonUV安装、升级、卸载详细步骤记录》:本文主要介绍PythonUV安装、升级、卸载的详细步骤,uv是Astral推出的下一代Python包与项目管理器,主打单一可执行文件、极致性能... 目录安装检查升级设置自动补全卸载UV 命令总结 官方文档详见:https://docs.astral.sh/

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

Python中help()和dir()函数的使用

《Python中help()和dir()函数的使用》我们经常需要查看某个对象(如模块、类、函数等)的属性和方法,Python提供了两个内置函数help()和dir(),它们可以帮助我们快速了解代... 目录1. 引言2. help() 函数2.1 作用2.2 使用方法2.3 示例(1) 查看内置函数的帮助(

Python虚拟环境与Conda使用指南分享

《Python虚拟环境与Conda使用指南分享》:本文主要介绍Python虚拟环境与Conda使用指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、python 虚拟环境概述1.1 什么是虚拟环境1.2 为什么需要虚拟环境二、Python 内置的虚拟环境工具

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部