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 panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

Python pandas库自学超详细教程

《Pythonpandas库自学超详细教程》文章介绍了Pandas库的基本功能、安装方法及核心操作,涵盖数据导入(CSV/Excel等)、数据结构(Series、DataFrame)、数据清洗、转换... 目录一、什么是Pandas库(1)、Pandas 应用(2)、Pandas 功能(3)、数据结构二、安

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

Python安装Pandas库的两种方法

《Python安装Pandas库的两种方法》本文介绍了三种安装PythonPandas库的方法,通过cmd命令行安装并解决版本冲突,手动下载whl文件安装,更换国内镜像源加速下载,最后建议用pipli... 目录方法一:cmd命令行执行pip install pandas方法二:找到pandas下载库,然后

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买

Python标准库之数据压缩和存档的应用详解

《Python标准库之数据压缩和存档的应用详解》在数据处理与存储领域,压缩和存档是提升效率的关键技术,Python标准库提供了一套完整的工具链,下面小编就来和大家简单介绍一下吧... 目录一、核心模块架构与设计哲学二、关键模块深度解析1.tarfile:专业级归档工具2.zipfile:跨平台归档首选3.

使用Python构建智能BAT文件生成器的完美解决方案

《使用Python构建智能BAT文件生成器的完美解决方案》这篇文章主要为大家详细介绍了如何使用wxPython构建一个智能的BAT文件生成器,它不仅能够为Python脚本生成启动脚本,还提供了完整的文... 目录引言运行效果图项目背景与需求分析核心需求技术选型核心功能实现1. 数据库设计2. 界面布局设计3

Python进行JSON和Excel文件转换处理指南

《Python进行JSON和Excel文件转换处理指南》在数据交换与系统集成中,JSON与Excel是两种极为常见的数据格式,本文将介绍如何使用Python实现将JSON转换为格式化的Excel文件,... 目录将 jsON 导入为格式化 Excel将 Excel 导出为结构化 JSON处理嵌套 JSON:

Python操作PDF文档的主流库使用指南

《Python操作PDF文档的主流库使用指南》PDF因其跨平台、格式固定的特性成为文档交换的标准,然而,由于其复杂的内部结构,程序化操作PDF一直是个挑战,本文主要为大家整理了Python操作PD... 目录一、 基础操作1.PyPDF2 (及其继任者 pypdf)2.PyMuPDF / fitz3.Fre

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统