当前位置: 首页 > news >正文

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

文章目录

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

在这里插入图片描述

🍔准备工作

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

import urllib.requesturl = "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 BeautifulSoupfile = 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.lryc.cn/news/321358.html

相关文章:

  • C语言经典算法-8
  • Panasonic松下PLC如何数据采集?如何实现快速接入IIOT云平台?
  • 高性能 MySQL 第四版(GPT 重译)(四)
  • 整型数组按个位值排序 - 华为OD统一考试(C卷)
  • 【React】Diff算法
  • 【物联网】Modbus 协议及应用
  • Docker容器引擎
  • 2.28线程
  • TCP/IP ⽹络模型
  • 云原生:重塑未来应用的基石
  • 蓝桥杯day4刷题日记
  • [Qt学习笔记]Qt下使用Halcon实现采图时自动对焦的功能(Brenner梯度法)
  • 常州IGM机器人RTE497的日常维修保养方法
  • 如何利用机器学习和Python编写预测模型来预测设备故障
  • mysql部署(2)主从复制
  • FX-数组的使用
  • springboot283图书商城管理系统
  • FFmpeg-- c++实现:音频流aac和视频流h264封装
  • 单片机烧录方式,JTAG,ISP,SWD,
  • 【项目管理后台】Vue3+Ts+Sass实战框架搭建一
  • 基于python 变配电室运行状态评估与预警系统flask-django-nodejs-php
  • 【自记录】VS2022编译OpenSSL1.0.2u
  • ES代替品:轻量级搜索引擎MeiliSearch
  • 用C语言打造自己的Unix风格ls命令
  • git的起源
  • 软件杯 深度学习 python opencv 火焰检测识别
  • C# double类型计算精度问题解决
  • 基于Springcloud+Vue校园招聘系统 Eureka分布式微服务
  • 【NLP笔记】RNN总结
  • [c++]内存管理