【Python爬虫】详解BeautifulSoup()及其方法

news2024/11/30 6:51:20

文章目录

  • 🍔准备工作
  • 🌹BeautifulSoup()
    • ⭐代码实现
    • ✨打印标签里面的内容
    • ✨快速拿到一个标签里的属性
    • ✨打印整个文档
    • 🎆获取特定标签的特定内容
  • 🌹查找标签
    • 🎈在文档查找标签 find_all
    • 🎈正则表达式搜索
  • 🌹查找参数
  • 🌹文本(text)参数
  • 🌹limit参数
  • 🛸通过标签来查找 select
  • 🛸通过类名来查找
  • 🛸通过id来查找

在这里插入图片描述

🍔准备工作

我们运行下面的代码,爬取一下百度网站

import urllib.request

url = "https://www.baidu.com"
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"
}
req = urllib.request.Request(url=url, headers=headers)
reponse = urllib.request.urlopen(req)
print(reponse.read().decode("utf-8"))

创建一个file,后缀为html,把爬取的代码粘贴过去
在这里插入图片描述

🌹BeautifulSoup()

BeautifulSoup 是一个用于解析 HTML 和 XML 文档的 Python 库。它提供了一种简单而灵活的方式,帮助开发者从网页中提取所需的数据

使用 BeautifulSoup,你可以将 HTML 或 XML 文档加载到解析树中,并使用类似于 DOM(文档对象模型)的方式来遍历和搜索文档的结构。然后,你可以使用各种方法和属性来定位、提取和操作文档中的元素和数据。

以下是 BeautifulSoup 的一些常见用途:

  • 解析和提取数据:通过加载 HTML 或 XML 文档,BeautifulSoup 可以帮助你轻松地提取出所需的数据。你可以使用 CSS 选择器或类似于字典的属性访问方式来定位元素,并获取其文本内容、属性值等。
  • 数据清洗和转换:BeautifulSoup 提供了诸多方法来处理解析树中的元素和数据。你可以删除、替换或修改特定的标签、属性,也可以对文本内容进行处理,如去除空白字符、标准化格式等。
  • 网页爬虫:在网络爬虫中,你可以使用 BeautifulSoup 来解析抓取到的网页内容,提取出需要的数据,如标题、链接、图像等。它可以帮助你处理网页中的复杂结构,并提供便捷的 API 进行数据提取和处理。
  • 数据可视化和分析:BeautifulSoup 可以与其他数据处理和可视化库(如 Pandas、Matplotlib)结合使用,进一步分析和展示提取到的数据。你可以将数据转换为数据框架、绘制图表或进行其他分析操作。

总的来说,BeautifulSoup 是一个功能强大且易于使用的工具,用于解析和处理 HTML、XML 等文档,并从中提取所需的数据。它在数据爬取、数据清洗和转换等领域都有广泛的应用。

⭐代码实现

from bs4 import BeautifulSoup

file = open("./baidu.html","rb")
html=file.read()

# 解析的是html文件
# 解析器是html.parser
bs=BeautifulSoup(html,"html.parser")

print(bs.title)

运行后发现
在这里插入图片描述
运行结果提取出了title


同理
在这里插入图片描述
在这里插入图片描述

✨打印标签里面的内容

print(bs.title.string)

在这里插入图片描述

✨快速拿到一个标签里的属性

print(bs.a.attrs)

在这里插入图片描述

✨打印整个文档

print(bs)

在这里插入图片描述

🎆获取特定标签的特定内容

print(bs.head.contents[1])

在这里插入图片描述

🌹查找标签

🎈在文档查找标签 find_all

查找标签
搜索到的仅仅是那一种标签

t_list=bs.find_all("span")

在这里插入图片描述
把所有的 某个标签 放到列表里面

🎈正则表达式搜索

需要引入库

import re

搜索出来的是包含 某个标签 的

在这里插入图片描述
我们查找a标签,head标签里面有a这个 字母,所以被选出来了
由于link标签里面的链接中有a字母,所以link标签也被选出来了

🌹查找参数

比如下面这种
在这里插入图片描述

🌹文本(text)参数

在这里插入图片描述

🌹limit参数

限制获取到的个数
在这里插入图片描述

🛸通过标签来查找 select

在这里插入图片描述

🛸通过类名来查找

在这里插入图片描述

🛸通过id来查找

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1529573.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何做好一个“标题党”?媒介盒子揭秘

广告界常说“酒香也怕巷子深”,好标题能够增强文案的点击率,标题党的目的就在于合理利用标题让自己的文案更有点击率。今天媒介盒子就来和大家聊聊:如何做好一个“标题党”。 一、 利用好奇心 好奇心是普遍存在的,比如当看小说的…

题目:反转列表

目录 一、题目描述 方法一:扭动箭头 思路: 注意点: 代码: 代码解析: 1. 2. 优化代码: 注意: 1. 2. 方法二:头插 1.介绍头插 2.解决思路 3.代码 4.注意点 总结&#…

AV1:帧内预测(一)

​VP9支持10种帧内预测模式,包括8种角度模式和非角度模式DC、TM(True Motion)模式,AV1在其基础上进一步扩展,AV1帧内预测角度模式更细化,同时新增了部分非角度模式。 扩展的角度模式 AV1在VP9角度模式的基础上进一步扩展&#xf…

漫谈微服务网关

一、什么是服务网关 服务网关 路由转发 过滤器 1、路由转发:接收一切外界请求,转发到后端的微服务上去; 2、过滤器:在服务网关中可以完成一系列的横切功能,例如权限校验、限流以及监控等,这些都可以通过…

AI智能客服的数据训练流程

实现智能客服的数据训练流程可以分为几个主要步骤,包括数据准备、模型选择、模型训练和评估。以下是一个基本的数据训练流程,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.数据准备&am…

软件开发项目管理/研发项目管理软件:国产EDA工具厂商行芯科技上线奥博思PowerProject项目管理软件平台

国内领先的EDA工具链提供商杭州行芯科技有限公司(以下简称:行芯科技)与北京奥博思软件技术有限公司达成战略合作,奥博思软件将基于PowerProject项目管理系统助力行芯科技实现研发项目的全生命周期管理,提升管理效能&am…

fastjson反序列化攻略

漏洞原理 Json.parseObject(json, User.class)方法中,通过指定type的值实现定位某类,会执行User类的构造方法和属性中的get,set方法 判断是否是fastjson/(jackson) 1.2.24-1.2.83都会有dnslog的payload {"zer…

基于Springboot的船运物流管理系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的船运物流管理系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构…

(总结)OpenOFDM接收端信号处理流程

Overview — OpenOFDM 1.0 documentation 本篇文章为学习OpenOFDM之后的产出PPT,仅供学习参考。

28-4 文件上传漏洞 - %00和00截断

环境准备:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 一、白名单绕过、%00和O0截断 %00和O0截断定义: 在URL中,%00表示ASCII码中的0(零),而ASCII中0作为特殊字符保留,所以当URL中出现%00时就会认为读取已结束。这等同于一个结束…

springboot校服订购系统

摘 要 本文首先实现了校服订购系统设计与实现管理技术的发展随后依照传统的软件开发流程,最先为系统挑选适用的言语和软件开发平台,依据需求分析开展控制模块制做和数据库查询构造设计,随后依据系统整体功能模块的设计,制作系统的…

【c语言篇】每日一题-pta-实验11-2-9 链表逆置

题目如下&#xff1a; 裁判测试程序样例&#xff1a; #include <stdio.h> #include <stdlib.h>struct ListNode {int data;struct ListNode *next; };struct ListNode *createlist(); /*裁判实现&#xff0c;细节不表*/ struct ListNode *reverse( struct ListNod…

SCI一区 | Matlab实现GWO-TCN-BiGRU-Attention灰狼算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测

SCI一区 | Matlab实现GWO-TCN-BiGRU-Attention灰狼算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测 目录 SCI一区 | Matlab实现GWO-TCN-BiGRU-Attention灰狼算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测预测效果基本介绍模型描述程序…

Transformer的前世今生 day04(ELMO

ELMO 前情回顾 NNLM模型&#xff1a;主要任务是在预测下一个词&#xff0c;副产品是词向量Word2Vec模型&#xff1a;主要任务是生成词向量 CBOW&#xff1a;训练目标是根据上下文预测目标词Skip-gram&#xff1a;训练目标是根据目标词预测上下文词 ELMO模型的流程 针对Wor…

15届蓝桥杯备赛(2)

文章目录 刷题笔记(2)二分查找在排序数组中查找元素的第一个和最后一个位置寻找旋转排序数组中的最小值搜索旋转排序数组 链表反转链表反转链表II 二叉树相同的树对称二叉树平衡二叉树二叉树的右视图验证二叉搜索树二叉树的最近公共祖先二叉搜索树的最近公共祖先二叉树层序遍历…

实现el-table合并列

效果图如下 <el-table :data"atlasDataList" style"width: 100%" :span-method"spanMethod"><el-table-column prop"stationName" label"" width"180" /><el-table-column prop"atlasNumbe…

刷题日记:面试经典 150 题 DAY6

刷题日记&#xff1a;面试经典 150 题 DAY6 392. 判断子序列167. 两数之和 II - 输入有序数组11. 盛最多水的容器15. 三数之和209. 长度最小的子数组 392. 判断子序列 原题链接 392. 判断子序列 双指针&#xff0c;i指向s&#xff0c;j指向t 如果s[i]t[j]&#xff0c;则匹配…

ARM开发板实现24位BMP图片缩放

ARM开发板实现24位BMP图片缩放 一、linux平台bmp图片缩放 最近想在ARM开发板实现BMP图片的缩放&#xff0c;查看了一些资料&#xff0c;大家部分理论知识可参考&#xff1a; akynazh博主 &#xff0c;这位博主程序以window平台为主进行显示&#xff0c;发现在linux平台下编译…

【Leetcode】1793. 好子数组的最大分数

文章目录 题目思路代码复杂度分析时间复杂度空间复杂度 结果总结 题目 题目链接&#x1f517; 给你一个整数数组 n u m s nums nums &#xff08;下标从 0 0 0 开始&#xff09;和一个整数 k k k 。 一个子数组 ( i , j ) (i, j) (i,j) 的 分数 定义为 m i n ( n u m s …

Livox激光雷达 mid360 跑 fastlio2 - 流程记录

mid360 跑 fastlio2 一、配置 mid360 环境1.1、主机配置静态IP为192.168.1.501.2、Livox-SDK21.3、Livox_ros_driver2二、Fast-lio22.1、下载源码2.2、修改代码2.3、编译、运行 提示一下&#xff0c;如果在一些板上&#xff08;比如rk3399&#xff0c;或者是树莓派 &#xff0…