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批量转换图片为PDF

《详解如何通过Python批量转换图片为PDF》:本文主要介绍如何基于Python+Tkinter开发的图片批量转PDF工具,可以支持批量添加图片,拖拽等操作,感兴趣的小伙伴可以参考一下... 目录1. 概述2. 功能亮点2.1 主要功能2.2 界面设计3. 使用指南3.1 运行环境3.2 使用步骤4. 核

Python 安装和配置flask, flask_cors的图文教程

《Python安装和配置flask,flask_cors的图文教程》:本文主要介绍Python安装和配置flask,flask_cors的图文教程,本文通过图文并茂的形式给大家介绍的非常详细,... 目录一.python安装:二,配置环境变量,三:检查Python安装和环境变量,四:安装flask和flas

使用Python自建轻量级的HTTP调试工具

《使用Python自建轻量级的HTTP调试工具》这篇文章主要为大家详细介绍了如何使用Python自建一个轻量级的HTTP调试工具,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录一、为什么需要自建工具二、核心功能设计三、技术选型四、分步实现五、进阶优化技巧六、使用示例七、性能对比八、扩展方向建

基于Python打造一个可视化FTP服务器

《基于Python打造一个可视化FTP服务器》在日常办公和团队协作中,文件共享是一个不可或缺的需求,所以本文将使用Python+Tkinter+pyftpdlib开发一款可视化FTP服务器,有需要的小... 目录1. 概述2. 功能介绍3. 如何使用4. 代码解析5. 运行效果6.相关源码7. 总结与展望1

使用Python实现一键隐藏屏幕并锁定输入

《使用Python实现一键隐藏屏幕并锁定输入》本文主要介绍了使用Python编写一个一键隐藏屏幕并锁定输入的黑科技程序,能够在指定热键触发后立即遮挡屏幕,并禁止一切键盘鼠标输入,这样就再也不用担心自己... 目录1. 概述2. 功能亮点3.代码实现4.使用方法5. 展示效果6. 代码优化与拓展7. 总结1.

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Python基础文件操作方法超详细讲解(详解版)

《Python基础文件操作方法超详细讲解(详解版)》文件就是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位,文件的核心操作就是读和写,:本文主要介绍Python基础文件操作方法超详细讲解的相... 目录一、文件操作1. 文件打开与关闭1.1 打开文件1.2 关闭文件2. 访问模式及说明二、文件读写1.

Python将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整