Python爬虫之美丽的汤——BeautifulSoup

news2025/1/20 1:41:59

本文概要

本篇文章主要介绍利用Python爬虫之美丽的汤——BeautifulSoup,适合练习爬虫基础同学,文中描述和代码示例很详细,干货满满,感兴趣的小伙伴快来一起学习吧!
在这里插入图片描述

  是不是以为今天要教大家怎么做饭?确实,但是更大概率是你一定起猛了,再睡会,hhh…

🌟🌟🌟个人简介🌟🌟🌟

☀️大家好!我是新人小白博主朦胧的雨梦,希望大家多多关照和支持😝😝😝
🌖大家一起努力,共同成长,相信我们都会遇到更好的自己👊👊👊
🌗期待我的文章能给各位带来收获和解决问题的灵感🤩🤩🤩
🌟大家的三连是我不断更新的动力~😘😘😘

在这里插入图片描述

目录

  • 本文概要
  • 🌟🌟🌟个人简介🌟🌟🌟
  • 本次操练网页
  • 学习目标🏆
  • ✨一.爬虫模板
    • 🌲1.urllib库的使用模板
    • 🌲2.requests库的使用模板
  • ✨二.分析信息接口
  • ✨三.通过请求拿到响应
  • ✨四. BeautifulSoup
    • 🌲1.漂亮的汤——BeautifulSoup
  • ✨五.实战星巴克
    • 🌲1.分析页面信息
  • ✨六.数据保存
  • ✨七.总结(附完整代码)
    • 🌲完整代码
  • 💫往期好文推荐

本次操练网页

    https://www.starbucks.com.cn/menu/(星巴克)
网页内容:
在这里插入图片描述

学习目标🏆

  1.了解BeautifulSoup;

  2.掌握BeautifulSoup语法;

  3.掌握如何使用BeautifulSoup提取保存内容。

✨一.爬虫模板

🌲1.urllib库的使用模板

import urllib.request     
url ='xxxxxxxxxxxx'   
# 发送请求                
request= urllib.request.Request(url,data,header)      
# 得到响应
response=urllib.request.urlopen(request)
# 解码
content = response.read().decode() 
# 查看数据
print(content)    

🌲2.requests库的使用模板

import requests   
url ='xxxxxxxxxxxx' 
# 发送请求                              
response = request.get(url, params,headers)  (get请求或者post请求)  
# 根据响应的格式解码,非常智能
response.encoding=response.appareent_encoding
# 查看数据
print(response.txt)

✨二.分析信息接口

  1.首先右键查看网页源代码

在这里插入图片描述

  爬取的信息就在源代码里,所以直接对网页链接发起请求,从而得到它的网页源码。

✨三.通过请求拿到响应

import requests

# 需要请求的url
url = 'https://www.starbucks.com.cn/menu/'

# 伪装请求头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36',
}

# 获得响应
response = requests.get(url=url, headers=headers)

# 智能解码
response.encoding = response.apparent_encoding
# 打印数据
print(response.text)

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

请你喝杯咖啡,hahaha,上一篇咱们重点学习了如何去使用正则表达式提取页面信息,本篇正式学习如何使用BeautifulSoup提取页面信息

✨四. BeautifulSoup

🌲1.漂亮的汤——BeautifulSoup

  BeautifulSoup是一个可以从HTML或XML文件中提取数据的Python库。接口设计人性化。
安装bs4

pip install bs4

导入bs4

from bs4 import BeautifulSoup

创建对象

soup = BeautifulSoup(response.read().decode(),'lxml')

BeautifulSoup根据标签名查找节点
  例如:存在一个如下的标签

    <a href="雨梦"></a>
   找到的是第一个符合条件的数据
   soup.a
   获取标签a的属性和属性值
   soup.a.attrs

BeautifulSoup的一些函数

函数作用
find()返回的是第一个符合条件的数据
findall()返回一个列表里面装的是所有符合条件的数据
select()返回的是一个列表,并且返回多个数据

select()函数

方法语法作用
类选择器.可以通过.代表class,我们把这种方法叫做类选择器
id#可以通过#代表id
属性选择器a[href]通过属性来寻找对应的标签
层级选择器a+空格+后代标签后代选择器
层级选择器a+>+后代标签子一代选择器
层级选择器a+>+后一代代标签子一代选择器
层级选择器a+,+其他标签组合选择器

节点信息

方法作用
obj.string获取节点内容
obj.get_text获取节点内容

区别:如果标签中只有内容,两者皆可,但是除了内容还有标签,那么string就获取不到数据,换用get_text。
到这里,相信大家已经初步掌握了漂亮的汤,那我们开始实践:

✨五.实战星巴克

🌲1.分析页面信息

在这里插入图片描述

soup = BeautifulSoup(response.text, 'lxml')
name_list = soup.select('ul[class="grid padded-3 product"] strong')
print(name_list)

效果
在这里插入图片描述
  深刻理解语句的用意,多多练习!

✨六.数据保存

# 保存数据
for i in name_list:
    with open('星巴克.txt', 'a', encoding='utf-8') as fp:
        fp.write(i.get_text())
        fp.write('\n')
print('文章爬取完成')

效果
在这里插入图片描述

✨七.总结(附完整代码)

  通过今天的小案例,相信大家已经对美丽的汤印象深刻了,好了,今天就分享到这里,谢谢大家的观看,有什么想法记得评论区告诉我!拜拜~✨ ✨ ✨

🌲完整代码

import requests
from bs4 import BeautifulSoup

# 需要请求的url
url = 'https://www.starbucks.com.cn/menu/'

# 伪装请求头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36',
}

# 获得响应
response = requests.get(url=url, headers=headers)

# 智能解码
response.encoding = response.apparent_encoding

# 提取数据
soup = BeautifulSoup(response.text, 'lxml')
name_list = soup.select('ul[class="grid padded-3 product"] strong')

# 保存数据
for i in name_list:
    with open('星巴克.txt', 'a', encoding='utf-8') as fp:
        fp.write(i.get_text())
        fp.write('\n')
print('文章爬取完成')

💫往期好文推荐

  TOP🥇.Python爬虫经典战役——正则实战❤️❤️❤️🏆🏆🏆❤️❤️❤️

  TOP🥈.Python |浅谈爬虫的由来❤️❤️❤️🏆🏆🏆❤️❤️❤️

  TOP🥉.ChatGPT | 一文详解ChatGPT(学习必备)❤️❤️❤️🏆🏆🏆❤️❤️❤️

在这里插入图片描述

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

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

相关文章

MATLAB图像处理:图像分割、特征提取和目标识别的应用和优化

MATLAB图像处理&#xff1a;图像分割、特征提取和目标识别的应用和优化 作为一种常用的图像处理工具&#xff0c;MATLAB在图像分割、特征提取和目标识别等方面具有广泛的应用。本文将详细介绍这三个方面的应用和优化。 第一章&#xff1a;图像分割 图像分割是将一幅图像划分成…

阿里云服务器安装宝塔面板教程图解(超详细)

使用阿里云服务器安装宝塔面板教程&#xff0c;阿里云服务器网以CentOS操作系统为例&#xff0c;安装宝塔Linux面板&#xff0c;先远程连接到云服务器&#xff0c;然后执行宝塔面板安装命令&#xff0c;系统会自动安装宝塔面板&#xff0c;安装完成后会返回面板地址、账号和密码…

Django如何把SQLite数据库转换为Mysql数据库

大部分新手刚学Django开发的时候默认用的都是SQLite数据库&#xff0c;上线部署的时候&#xff0c;大多用的却是Mysql。那么我们应该如何把数据库从SQLite迁移转换成Mysql呢&#xff1f; 之前我们默认使用的是SQLite数据库&#xff0c;我们开发完成之后&#xff0c;里面有许多数…

『python爬虫』20. 用协程爬取一本小说(保姆级图文)

目录 1. 分析目标网站1.1 寻找所有章节信息1.2 寻找章节内容 2. 爬虫思路获取得到的信息首先要同步协程获取所有章节标题和cid写入异步任务然后根据章节标题和cid获取章节内容 3. 完整实现代码总结 欢迎关注 『python爬虫』 专栏&#xff0c;持续更新中 欢迎关注 『python爬虫』…

linux命令文本命令之~~~ sort ~~ tr ~~cut ~~ uniq ~~split~~~paste~~eval

目录 一. sort命令二. uniq 命令三. tr命令四. cut命令五 . split六. paste 合并文件内容的列七. eval命令 一. sort命令 以行为单位对文件内容进行排序&#xff0c;也将他根据不同的数据类型来排序 比较原则是从首字符向后&#xff0c;依次按ASCII码进行比较&#xff0c;最后…

龟兔赛跑,环形链表解题思路:用兔子的速度,龟的智慧,和链表的结构,解决力扣难题

本篇博客会讲解力扣“141. 环形链表”的解题思路&#xff0c;这是题目链接。 审题 先来审题&#xff1a; 以下是输出示例&#xff1a; 以下是提示&#xff1a; 以下是进阶&#xff1a; 思路 本题有一种非常巧妙的解法&#xff1a;快慢指针法&#xff0c;又称龟兔赛跑法…

SpringBoot——默认页面在哪里?

简单介绍&#xff1a; 在之前我们创建了一个SpringBoot的应用程序&#xff0c;并且我们也启动了&#xff0c;但是我们都是在postman或者是在控制台看到了我们的界面&#xff0c;那么在浏览器中看到的界面其实只有一个&#xff1a; 这个界面其实就是SpringBoot的报错默认界面&a…

buuctf8

目录 crypto 摩丝 password 变异凯撒 Quoted-printable Rabbit web [护网杯 2018]easy_tornado [HCTF 2018]admin misc 被劫持的神秘礼物​编辑 crypto 摩丝 下载文件&#xff0c;得到一串摩斯密码 在线解码 password 下载文件 张三英文zs&#xff0c;加上生日&a…

opencv_contrib模块编译与安装

前言 由于opencv_contrib模块的安装依赖于opencv基础模块&#xff0c;所以看该教程前请先看一遍OpenCV基础模块安装教程 下载 下载 opencv_contrib模块&#xff08;需要与opencv基础模块版本号4.6.0相同&#xff0c;国内可以在gitcode下载&#xff09; 配置、编译、安装 打…

网工视角看基础网络,原来这么与众不同

大家好&#xff0c;我是老杨。 前两天去华为生态大会刚回来&#xff0c;颇为感慨。 感慨万物互联的世界越来越大&#xff0c;网络渗透度也越来越极致化。 网络很大&#xff0c;非常大&#xff0c;但在网工眼里&#xff0c;网络复杂又美妙&#xff0c;有着外行人难以理解的魅…

大数据Doris(十九):Doris索引介绍与前缀索引

文章目录 Doris索引介绍与前缀索引 一、Doris索引介绍 二、前缀索引 Doris索引介绍与前缀索引 一、Doris索引介绍 索引用于帮助快速过滤或查找数据。目前 Doris 主要支持两类索引: 内建的智能索引,包括前缀索引和 ZoneMap

【Prompting】ChatGPT Prompt Engineering开发指南(2)

ChatGPT Prompt Engineering开发指南2 从产品概况表生成营销产品描述问题1&#xff1a;文本太长问题2: 文本聚焦于错误的细节问题3&#xff1a;描述需要一个尺寸表 加载Python库查看HTML内容来源 在本教程中&#xff0c;学习迭代分析并完善给出的提示&#xff0c;以从结果概况表…

20230514 Google宣布引入生成式人工智能搜索引擎

&#x1f680; Google宣布引入生成式人工智能搜索引擎&#xff0c;可能是最大变化之一。 Google宣布引入生成式人工智能搜索引擎&#xff0c;可能是最大变化之一。 新搜索将使用人工智能模型整合互联网信息&#xff0c;更好地响应用户需求。然而&#xff0c;网络出版商担心这…

python+vue流浪动物公益科普宠物在线领养网站

使用动物在线领养网站的用户分管理员和用户两个角色的权限子模块。 开发语言&#xff1a;Python 框架&#xff1a;django/flask Python版本&#xff1a;python3.7.7 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 开发软件&#xff1a;PyCharm 系统所要实现的功…

接口自动化测试之request模块讲解,以及初步接口自动化测试框架封装(统一请求)

一、有接口测试工具的情况下&#xff0c;为什么要做接口自动化&#xff1f; 1.敏捷开发&#xff0c;接口一般数量很大&#xff0c;团队实现接测试&#xff0c;版本控制。 2.功能太死板&#xff0c;有些接口完全无法实现&#xff08;复杂的加密接口&#xff0c;签名接口等) 3.接…

【STL十九】算法——修改序列的操作(copy、move、remove、transform、replace)

算法——不修改序列的操作&#xff08;copy、move、transform、remove、replace&#xff09; 一、分类二、修改序列的操作三、copy四、move五、remove、remove_if六、fill、transform、replace、replace_if、reverse 一、分类 根据网站https://www.apiref.com/cpp-zh/cpp/head…

Spring的执行流程以及Bean的作用域和生命周期

深入Bean对象 1. Bean对象的作用域1.1 引出作用域问题1.2 六种作用域 2. Spring的执行流程3. Bean对象的生命周期 在之前的学习中&#xff0c;我们了解到Spring能够用来帮助我们管理Java中的Bean对象&#xff0c;我们能够向Spring的IOC容器中添加以及获取对象。那我们从Spring对…

【腾讯云 Finops Crane 集训营】学习云原生成本优化

目录 开篇介绍搭建环境第一步第二步第三步 添加集群成本洞察成本分析资源推荐与副本数智能预测与自动扩缩容EHPA安装Metrics Server创建测试应用创建 EffectiveHPA增加负载整体流程 调度优化负载感知调度拓扑感知调度 混部清理环境 开篇 某次闲逛CSDN&#xff0c;发现了这样一…

(文章复现)基于电力系统碳排放流理论的碳排放分摊模型研究(含matlab代码)

参考文献&#xff1a;基于电力系统碳排放流理论的碳排放分摊模型研究 之前写过一篇博客复现论文《电力系统碳排放流的计算方法初探》&#xff0c;那篇文章模型比较简单&#xff0c;没有考虑网损。(文章复现)电力系统碳排放流的计算方法初探(含matlab代码) 今天要复现的这篇文献…

1行命令本地部署 AgentGPT

本地部署 AgentGPT 部署 AgentGPT访问 AgentGPT 部署 AgentGPT 运行下面命令部署 AgentGPT&#xff0c;输入你的 OpenAI Key&#xff0c; git clone https://github.com/reworkd/AgentGPT.git; cd AgentGPT; ./setup.sh --docker访问 AgentGPT 使用浏览器打开 http://localh…