Python爬虫之美丽的汤——BeautifulSoup

news/2024/7/19 9:30:04 标签: python, 爬虫, beautifulsoup, 学习, 开发语言

本文概要

本篇文章主要介绍利用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.首先右键查看网页源代码

在这里插入图片描述

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

✨三.通过请求拿到响应

python">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

python">pip install bs4

导入bs4

python">from bs4 import BeautifulSoup

创建对象

python">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.分析页面信息

在这里插入图片描述

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

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

✨六.数据保存

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

效果
在这里插入图片描述

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

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

🌲完整代码

python">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.niftyadmin.cn/n/319653.html

相关文章

如何安装Mysql的审计插件

背景 最近项目要验收了&#xff0c;数据库的一个验收标准就是要有数据库审计&#xff0c;所以参照资料安装了Mysql的审计插件。 正文 一、下载插件 下载地址&#xff1a;https://bintray.com/mcafee/mysql-audit-plugin/release/1.1.4-725#files 可选择对应MySQL5.7数据库的…

把Kubernetes用于微服务管理的最佳实践

把Kubernetes用于微服务管理的最佳实践 一、 引言1 什么是 Kubernetes2 Kubernetes 的优势和应用场景3 为什么使用 Kubernetes 部署容器化应用程序 二、 准备工作1 安装 Kubernetes2 准备容器镜像3 准备 Kubernetes 配置文件 三、 部署应用程序1 创建 Kubernetes 命名空间2 创建…

MC 我的世界 模拟城市(模拟大都市)sim-u 1.9测试版发布了

更新日志 从底层完全重构&#xff0c;使用 简单联机模组 配合可以实现多人联机 建筑预览功能 建筑工已完成 规划师已完成 面包店&#xff1a;可制作面包&#xff0c;南瓜饼&#xff0c;曲奇饼&#xff0c;蛋糕 肉铺&#xff1a;NPC可以自取去肉类农场去生肉售卖 新增农场&…

Cpython的多线程技术之痛

历史原因 在Python官网下载的默认解释器是采用C语言编写的Cpython解释器。在Python语言开发之初&#xff0c;计算机都是单核CPU&#xff0c;每个单核CPU同一时刻只能运行一个线程。为了模拟多线程工作&#xff0c;这里采用了模拟机制&#xff0c;让不同线程根据时间片段&#…

优于FCOS:在One-Stage和Anchor-Free目标检测中以最小的成本实现最小的错位(代码待开源)...

关注并星标 从此不迷路 计算机视觉研究院 公众号ID&#xff5c;ComputerVisionGzq 学习群&#xff5c;扫码在主页获取加入方式 计算机视觉研究院专栏 作者&#xff1a;Edison_G 与基线FCOS&#xff08;一种单阶段和无锚目标象检测模型&#xff09;相比&#xff0c;新提出的模型…

机器学习:基于Kmeans聚类算法对银行客户进行分类

机器学习&#xff1a;基于Kmeans聚类算法对银行客户进行分类 作者&#xff1a;i阿极 作者简介&#xff1a;Python领域新星作者、多项比赛获奖者&#xff1a;博主个人首页 &#x1f60a;&#x1f60a;&#x1f60a;如果觉得文章不错或能帮助到你学习&#xff0c;可以点赞&#x…

MySQL- 索引

索引是帮助MySQL高效获取数据的数据结构(有序)。在数据之外, 数据库系统还维护着满足特定查找算法的数据结构, 这些数据结构以某种方式引用数据, 这样就可以在这些数据结构上实现高级查找算法, 这种数据结构就是索引。 索引结构 MySQL的索引是在存储层实现的, 不同的存储引擎有…

Python 列表切片赋值与步长操作:深入探索|NOC Python决赛辅导

你好&#xff0c;我是悦创。 Python 是一种强大且易于学习的编程语言&#xff0c;提供了多种数据结构&#xff0c;如列表&#xff08;list&#xff09;&#xff0c;用于存储和操作数据。在处理列表时&#xff0c;我们经常使用切片操作&#xff0c;它能让我们有效地获取列表的一…