欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > Python 抓取好利来甜品信息并下载封面图片

Python 抓取好利来甜品信息并下载封面图片

2024/10/24 13:19:28 来源:https://blog.csdn.net/iku_n/article/details/141094951  浏览:    关键词:Python 抓取好利来甜品信息并下载封面图片
文章概述

本文将介绍如何使用 Python 抓取好利来甜品的商品信息,并将这些信息保存到 CSV 文件中,同时还会下载每款甜品的封面图片到指定文件夹。我们将使用 requests 库来进行 HTTP 请求,使用 csv 库来写入 CSV 文件,并使用 os 库来处理文件和目录。

准备工作

在开始之前,请确保安装了以下 Python 库:

  • requests:用于发送 HTTP 请求。
  • csv:用于处理 CSV 文件。
  • os:用于文件和目录操作。

可以通过 pip 安装所需的库:

pip install requests
代码实现
import csv
import json
import os
import requests# 初始化全局变量
list_url_id = []
id = 1  # 商品ID
type_id = 1  # 甜品类型ID# 创建封面的目录
# 使用 os.makedirs 而不是 os.mkdir 来避免错误
try:os.makedirs('好利来封面', exist_ok=True)
except Exception as e:print(f"目录创建失败: {e}")# 标题头
list_mulu = ['id', '商品名', '甜品价格', '甜品口味', '甜品规格', '保质期', '储蓄方式', '甜品类型id']# 写入 CSV 文件
with open('好利友.csv', 'w', encoding="gb18030", newline="") as fp:csv_writer = csv.writer(fp)csv_writer.writerow(list_mulu)# 定义请求头部
headers = {'Server': 'nginx/1.21.4','Date': 'Fri, 09 Jun 2023 03:39:16 GMT','Content-Type': 'text/html','Last-Modified': 'Sat, 03 Jun 2023 08:10:37 GMT','Transfer-Encoding': 'chunked','Connection': 'keep-alive','Vary': 'Accept-Encoding','ETag': 'W/"647af57d-179d"','via': '29f5b82c2e13','Content-Encoding': 'gzip'
}# 定义获取商品列表的函数
def List_url(i):data = {'platform': "pc", 'ver': "20211210", 'type_id': f"{i}", 'data_count': 0, 'word': ""}data2 = {'platform': "pc", 'ver': "20211210", 'type_id': f"{i}", 'data_count': 30, 'word': "", 'isNextPage': 'true'}reps = requests.post('https://api-mini-holiland.1900m.com/PcMallGoods/getGoodsList', data=data)reps.encoding = 'utf-8'pdaw = json.loads(reps.text)reps2 = requests.post('https://api-mini-holiland.1900m.com/PcMallGoods/getGoodsList', data=data2)reps2.encoding = 'utf-8'pdaw2 = json.loads(reps2.text)list_pdaw = pdaw['data']['list'] + pdaw2['data']['list']return list_pdaw# 定义解析和下载数据的函数
def Analysis_and_download(list_pdaw):global idglobal type_idfor pda in list_pdaw:if pda['goods_id'] in list_url_id:continuelist_url_id.append(pda['goods_id'])data2 = {'consignee_adcode': 411302001000,'goods_id': pda['goods_id'],'outlets_id': '3','platform': "pc",'ver': "20211210"}reps2 = requests.post('https://api-mini-holiland.1900m.com/MallGoods/detail', data=data2)json_reps = json.loads(reps2.text)['data']name = json_reps['name']url_cover = json_reps['cover_url']How_to_save = json_reps['storage_mode'] or '暂无'Expiration_date = json_reps['expiration_date'] or '暂无'flavor_name = json_reps['sku'][0]['flavor_name']Price = json_reps['sku'][0]['specification_list'][0]['price']Proposal = json_reps['sku'][0]['specification_list'][0].get('proposal', '')daxiao = json_reps['sku'][0]['specification_list'][0]['specification_name']guige = f'{daxiao}({Proposal})' or '暂无'# 下载封面with open(f'好利来封面/{id}.jpg', 'wb') as fp:fp.write(requests.get(url_cover).content)# 写入 CSV 文件with open('好利友.csv', 'a', encoding="gb18030", newline="") as fp:csv_writer = csv.writer(fp)csv_writer.writerow([id, name, Price, flavor_name, guige, Expiration_date, How_to_save, type_id])id += 1print(f"{name} 数据存储完成!")type_id += 1# 主程序
for i in range(3, 13):Analysis_and_download(List_url(i))print("所有数据抓取完成!")
注意事项
  1. API 访问限制:请检查 API 的访问频率限制,以免被封禁。
  2. 编码问题:本例中使用了 GB18030 编码以支持中文字符。
  3. 异常处理:代码中已加入了一些基本的异常处理,但在实际部署时可能还需要更多的健壮性测试。
结论

通过上述代码,我们可以轻松地抓取好利来甜品的相关信息,并将数据保存到 CSV 文件中,同时将封面图片下载到指定文件夹。这为后续的数据分析提供了便利。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com