视频只介绍了BS4的简单使用,但我想全部获取出来

其实翻看接口,直接有一个json资源提供了这些数据,但是没有分类

import re
import urllib.request
from bs4 import BeautifulSoup
import json
import datetime # 用来提取url的正则
REGEXP1 = '\"([^\"]*)\"'
# 源地址和菜单地址
SOURCE = 'https://www.starbucks.com.cn'
API = 'https://www.starbucks.com.cn/menu/' # 没有限制,可以直接读取
response = urllib.request.urlopen(API)
html = response.read().decode('UTF-8')
# print(html) # 用BS4解析
soupObject = BeautifulSoup(html, 'lxml')
ulList = soupObject.select('ul[class="grid padded-3 product"]')
# print(ulList) # 准备JSON容器
productList = [] # 先取所有ul,获取类型名称
for ul in ulList:
category = ul.select_one(selector='h3.caption')
if category is None:
continue categoryName = category.text
print(categoryName) # 再获取A标签,得到对应的产品和图片url
aTagList = ul.select(selector='li > a')
for aTag in aTagList:
name = aTag.text.strip() styleStr = aTag.select_one(selector='div')['style']
styleStr = re.findall(REGEXP1, styleStr)[0]
imgUrl = SOURCE + styleStr
print(f'{name} {imgUrl}') # 封装数据
product = {
'type': categoryName,
'name': name,
'image': imgUrl
}
productList.append(product) # 把Python集合对象转换成JSON数据
jsonData = json.dumps(productList) # 写入磁盘,文件名标注时间
nowTime = datetime.datetime.now()
nowTime = datetime.datetime.strftime(nowTime, '%Y年%m月%d日%H时%M分%S秒')
fp = open(file=f'星巴克产品菜单-{nowTime}.json', mode='w', encoding='UTF-8')
fp.write(jsonData)

  

【爬虫】Python获取星巴克所有产品的更多相关文章

  1. 【Python项目】简单爬虫批量获取资源网站的下载链接

    简单爬虫批量获取资源网站的下载链接 项目链接:https://github.com/RealIvyWong/GotDownloadURL 1 由来 自己在收集剧集资源的时候,这些网站的下载链接还要手动 ...

  2. 如何获取(GET)一杯咖啡——星巴克REST案例分析

    英文原文:How to GET a Cup of Coffee 我们已习惯于在大型中间件平台(比如那些实现CORBA.Web服务协议栈和J2EE的平台)之上构建分布式系统了.在这篇文章里,我们将采取另 ...

  3. pandas实战——对星巴克数据的分析

    一.实验对象 实验对象为星巴克在全球的门店数据,我们可以使用pandas对其进行简单的分析,如分析每个国家星巴克的数量,根据门店数量对国家进行排序等. 二.数据分析 1.读取数据并获取数据行列数 首先 ...

  4. 放养的小爬虫--京东定向爬虫(AJAX获取价格数据)

    放养的小爬虫--京东定向爬虫(AJAX获取价格数据) 笔者声明:只用于学习交流,不用于其他途径.源代码已上传github.githu地址:https://github.com/Erma-Wang/Sp ...

  5. python 获取日期

    转载   原文:python 获取日期 作者:m4774411wang python 获取日期我们需要用到time模块,比如time.strftime方法 time.strftime('%Y-%m-% ...

  6. Python 获取时间戳

    Python 获取时间通过 time 模块 如下代码,是通过获取当前的时间,按照格式输出 Python默认获取当前的时间返回的都是时间的元组,下面是元组的,字符串时间的一个转换输出 # -*- cod ...

  7. 【分享】纯jQuery实现星巴克官网导航栏效果

    前言 大冬天的没得玩,只能和代码玩. 所以就无聊研究了一下星巴克官网,在我看来应该是基本还原吧~ 请各位大神指教! 官网效果图 要写的就是最上方的会闪现的白色条条 效果分析 1.在滚动条往下拉到一定距 ...

  8. 【方法】纯jQuery实现星巴克官网导航栏效果

    前言 大冬天的没得玩,只能和代码玩. 所以就无聊研究了一下星巴克官网,在我看来应该是基本还原吧~ 请各位大神指教! 官网效果图 要写的就是最上方的会闪现的白色条条 效果分析 1.在滚动条往下拉到一定距 ...

  9. python 获取当前时间(关于time()时间问题的重要补充)

    python 获取当前时间   我有的时候写程序要用到当前时间,我就想用python去取当前的时间,虽然不是很难,但是老是忘记,用一次丢一次,为了能够更好的记住,我今天特意写下python 当前时间这 ...

  10. 杂项-公司:星巴克百科-un

    ylbtech-杂项-公司:星巴克百科 星巴克(Starbucks)是美国一家连锁咖啡公司的名称,1971年成立,是全球最大的咖啡连锁店,其总部坐落美国华盛顿州西雅图市.星巴克旗下零售产品包括30多款 ...

随机推荐

  1. Vue简单自定义Canvas验证码组件。

    在您的Vue项目中,是否曾遇到过需要增加验证码来增强账户安全性的情况?这个Vue通用Canvas验证码组件!采用Canvas,实现了高度自定义和灵活的验证码生成方式,让您的网站或应用轻松应对各类验证码 ...

  2. vue3 elementui plus Select 选择器不选择下拉框里面的数据得到的value值

    我们先来看 我点击弹框出现什么都不做 直接点击确定 看传参 tableId,timeColumnId,userColumnId直接是名称而没有获取value值 看下下拉框里面的数据 而我想直接点击获取 ...

  3. .NET5 .NET CORE 使用Apollo

    Apollo默认有一个"SampleApp"应用,"DEV"环境 和 "timeout" KEY. nuget 中下载 "Com. ...

  4. 文件系统(六):一文看懂linux ext4文件系统工作原理

    liwen01 2024.06.09 前言 Linux系统中的ext2.ext3.ext4 文件系统,它们都有很强的向后和向前兼容性,可以在数据不丢失的情况下进行文件系统的升级.目前ext4是一个相对 ...

  5. 透过 node-exporter 彻底弄懂机器监控:01. node-exporter 框架讲解

    前言 Prometheus 生态里有很多采集器负责各类监控数据的采集,其中使用最广泛的,显然是 node-exporter,负责 Linux.BSD 等系统的常规监控指标的采集,比如 CPU.内存.硬 ...

  6. 用 KV 缓存量化解锁长文本生成

    很高兴和大家分享 Hugging Face 的一项新功能: KV 缓存量化 ,它能够把你的语言模型的速度提升到一个新水平. 太长不看版: KV 缓存量化可在最小化对生成质量的影响的条件下,减少 LLM ...

  7. 牛客网在线编程-语法篇-基础语法——C 语言解题集

    前言 牛客网在线编程-语法篇-基础语法--C 语言解题集. 点击下方超链接跳转至对应编程题目,文章包含解析及源码. 01-基础语法 简单输出 BC1-Hello Nowcoder BC2-小飞机 基本 ...

  8. Css var 的基础使用

    Css var 语法 var(custom-property-name, value) - custom-property-name 必须 变量必须以 --开头 后面可以是英文.数字连接符,区分大小写 ...

  9. c++ 线程使用

    C++中的线程可以通过标准库提供的thread类实现.该类提供了创建和管理线程的方法和函数. 创建线程的方法: #include <thread> ... // 创建一个线程,其执行函数为 ...

  10. ZYNQ:Linux添加I2C-RTC驱动

    硬件情况 使用的是DS1338这款RTC时钟芯片,I2C总线对应到PS端的I2C1. 配置 内核 添加有关的驱动: 因为DS1338用的驱动与DS13307相似,一找发现是同一个配置. CONFIG_ ...