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

【python爬虫—星巴克产品】

文章目录

  • 需求
    • 爬取星巴克产品以及图片,星巴克菜单
  • python爬虫
  • 爬取结果

需求

爬取星巴克产品以及图片,星巴克菜单

  • 网页分析: 首先,需要分析星巴克官方网站的结构,了解菜单栏的位置、布局以及菜单项的标签或类名等信息。
  • 发送 HTTP 请求: 使用 Python 的 requests 模块发送 HTTP GET 请求,获取星巴克网页的 HTML 内容。
  • 解析 HTML: 使用一个 HTML 解析库(如 BeautifulSoup)解析网页的 HTML 内容,以便从中提取出菜单栏的数据。
  • 定位菜单栏元素: 使用解析库的选择器功能(如 CSS 选择器或 XPath)定位菜单栏所在的 HTML 元素。
  • 提取菜单数据: 从菜单栏元素中提取菜单项的信息,可能包括菜单项名称、图片等。
  • 数据存储: 将提取的菜单数据存储到适合的数据结构中。

python爬虫

  • 获取网页源码,这里没有反爬手段,不需要添加其他参数
import urllib
from bs4 import BeautifulSoup
import requestsbase_url = "https://www.starbucks.com.cn/menu/"
response = urllib.request.urlopen(base_url)
content = response.read().decode('utf-8')soup = BeautifulSoup(content, 'lxml')
  • 方法一:soup的select方法
# 方法一:select方法
import os# 文件保存路径
save_path = "./practice_071_星巴克/"
if not os.path.exists(save_path): os.makedirs(save_path)name_list = soup.select('ul[class="grid padded-3 product"]')
# name_list[0].select('li div')[0]["style"]
for name in name_list:submenu_pic  = name.select('li div')submenu_name = name.select('li strong')for pic_url,name in zip(submenu_pic, submenu_name):suffix = pic_url["style"].split('("')[-1].split('")')[0]# 文件地址 和 名称picture_url = 'https://www.starbucks.com.cn' + suffixpicture_name = name.get_text() + ".jpg"# 文件不支持名称中含有字符 '/',' 'picture_name = picture_name.strip().replace("/", 'or')# 方法1:urlretrieve# urllib.request.urlretrieve(url=picture_url, filename=os.path.join(save_path,picture_name))# 方法2:写入文件形式src_response = urllib.request.urlopen(picture_url)pic_content = src_response.read()with open(os.path.join(save_path,picture_name), 'wb') as fp:fp.write(pic_content)print("{}  完成,地址为  {}".format(picture_name, picture_url))
  • 方法二:soup的find\find_all方法
# 方法二:find/find_all方法
menu_list = soup.find('div', class_="wrapper fluid margin page-menu-list").find_all('li')for name in menu_list:suffix = name.find('div')["style"].split('("')[-1].split('")')[0]# 文件地址 和 名称picture_url = 'https://www.starbucks.com.cn' + suffixpicture_name = name.find("strong").get_text() + ".jpg"# 文件不支持名称中含有字符 '/',' 'picture_name = picture_name.strip().replace("/", 'or')urllib.request.urlretrieve(url=picture_url, filename=os.path.join(save_path,picture_name))print("{}  完成,地址为  {}".format(picture_name, picture_url))

爬取结果

在这里插入图片描述

http://www.lryc.cn/news/168103.html

相关文章:

  • shell SQL 变量 Oracle shell调用SQL操作DB
  • 【校招VIP】java线程池考点之核心线程数
  • [每周一更]-(第61期):Rust入门策略(持续更新)
  • 线程安全问题的原因及解决方案
  • 基于matlab中点放炮各类地震波时距曲线程序
  • vue中el-dialog 中的内容没有预先加载,因此无法获得内部元素的ref 的解决方案 使用强制提前加载dialog方法
  • vue-h5移动Web的rem配置
  • 企业级数据仓库-数仓实战
  • Spring Boot 下载文件(word/excel等)文件名中文乱码问题|构建打包不存在模版文件(templates等)
  • Ansible数组同步至Shell脚本数组中
  • 私域流量的优势
  • Java 中“1000==1000”为false,而”100==100“为true?
  • 片上网络(1)概述
  • 使用 React Native 针对 Android 进行开发
  • LeetCode 每日一题 2023/9/11-2023/9/17
  • Linux系统调试篇——GDBSERVER远程调试
  • 前端实现打字效果
  • Unix和Linux、GNU和GPL、RHEL和Centos、Debian和Ubuntu
  • InfiniBand vs 光纤通道,存储协议的选择
  • 第2章_freeRTOS入门与工程实践之单片机程序设计模式
  • python LeetCode 刷题记录 58
  • HarmonyOS开发:那些开发中常见的问题汇总(一)
  • 新能源汽车驱动电机的基本知识
  • 流媒体协议——RTSP
  • Arcgis提取点数据经纬度
  • 【小记录】jupyter notebook新版本
  • Ubuntu安装深度学习环境相关(yolov8-python部署)
  • jmeter采集ELK平台海量业务日志( 采用Scroll)
  • React 全栈体系(五)
  • 动态规划——状态机模型