使用python采集VIP会电商平台商品数据②单页数据采集

 获取标头:

响应:服务器返回的数据

预览:查看响应得数据

载荷:查询参数/请求参数

标头:查看请求的网址/请求的标头/请求方法

数据包地址:https://mapi.vip.com/vips-mobile/rest/shopping/pc/product/module/list/v2

一页的数据放在三个链接;

productIds::120个商品ID->找的商品的ID

获取商品所有ID.

-----------------------------------------------

"""
使用模块requestscsv
代码步骤发送请求获取数据解析数据保存数据
第一次请求:请求商品ID数据包->获取120个商品ID
第二次请求:获取商品详细数据链接"""
# 导入数据请求
import requests
# 导入正则
import re
# 导入csv
import csv
# 创建文件对象
f=open('7_vip商品.csv',mode='w',encoding='utf-8',newline='')
csv_write=csv.DictWriter(f,fieldnames=['标题','品牌','原价','折扣','售价'])# 发送请求 模拟浏览器
headers={'Referer':'https://category.vip.com/','User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36'}
url='https://mapi.vip.com/vips-mobile/rest/shopping/pc/search/product/rank'
# 查询参数
data= {'callback':'getMerchandiseIds','app_name':'shop_pc','app_version':'4.0','warehouse':'VIP_BJ','fdc_area_id':'101101101','client':'pc','mobile_platform':'1','province_id':'101101','api_key':'70f71280d5d547b2a7bb370a529aeea1','user_id':'','mars_cid':'1713279016912_3b96c6831122abbb85e7319098623bdb','wap_consumer':'a','standby_id':'nature','keyword':'口红','lv3CatIds':'','lv2CatIds':'','lv1CatIds':'','brandStoreSns':'','props':'','priceMin':'','priceMax':'','vipService':'','sort':'0','pageOffset':'0','channelId':'1','gPlatform':'PC','batchSize':'120','_':'1713279066798'
}
# 发送请求
response=requests.get(url=url,params=data,headers=headers)
# 获取服务器返回的响应数据
"""
response.text获取响应文本数据
response.json()获取想的json数据->数据是由{}/[]包裹起来的
response.content获取响应二进制数据 ->图片/视频/音频/特定格式
"""
info = response.text
# 解析数据
products=re.findall('"pid":"(\d+)"',info)
# 对商品ID进行切片处理
string_1=','.join(products[:50]) # 提取前50个ID
string_2=','.join(products[50:100]) # 中间50个ID
string_3=','.join(products[100:]) # 后def GetInfo(productIds):# 第二次请求link='https://mapi.vip.com/vips-mobile/rest/shopping/pc/product/module/list/v2'# 查询参数params={'app_name':'shop_pc','app_version':'4.0','warehouse':'VIP_BJ','fdc_area_id':'101101101','client':'pc','mobile_platform':'1','province_id':'101101','api_key':'70f71280d5d547b2a7bb370a529aeea1','user_id':'','mars_cid':'1713279016912_3b96c6831122abbb85e7319098623bdb','wap_consumer':'a','productIds':productIds,'scene':'search','standby_id':'nature','extParams':'{"stdSizeVids":"","preheatTipsVer":"3","couponVer":"v2","exclusivePrice":"1","iconSpec":"2x","ic2label":1,"superHot":1,"bigBrand":"1"}','context':'','_':'1713279066807',}# 发送请求json_date=requests.get(url=link,params=params,headers=headers).json()# 解析数据 字典取值for index in json_date['data']['products']:dit={'标题':index['title'],'品牌':index['brandShowName'],'原价':index['price']["marketPrice"],'折扣':index['price']["saleDiscount"],'售价':index['price']["marketPrice"],}csv_write.writerow(dit)print(dit)print(json_date)
# 前50条
GetInfo(productIds=string_1)
GetInfo(productIds=string_2)
GetInfo(productIds=string_3)#

使用模块

  • requests: 用于发送网络请求和获取数据。
  • csv: 用于读写CSV文件。

代码步骤

  1. 发送请求:向服务器发送请求,并获取数据。
  2. 解析数据:通过正则表达式解析响应文本,提取商品ID。
  3. 保存数据:将解析后的数据保存到CSV文件中。

第一次请求:请求商品ID数据包

  • 发送GET请求至指定URL,携带指定查询参数。
  • 获取服务器返回的响应数据,使用正则表达式提取商品ID。

第二次请求:获取商品详细数据链接

  • 构建第二次请求的URL和查询参数。
  • 发送GET请求至第二次链接,获取商品详细数据。
  • 解析JSON格式的数据,提取商品的详细信息并写入CSV文件。

----------------------------------------------

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp 组件传值

uniapp 组件传值 父传子子传父 uniapp 组件传值 父传子 在uniapp中&#xff0c;组件传值主要通过props进行。以下是一个简单的例子&#xff1a; 首先&#xff0c;创建一个组件MyComponent.vue&#xff1a; <template><view><text>{{ message }}</tex…

IBM SPSS Statistics for Mac中文激活版:强大的数据分析工具

IBM SPSS Statistics for Mac是一款功能强大的数据分析工具&#xff0c;为Mac用户提供了高效、精准的数据分析体验。 IBM SPSS Statistics for Mac中文激活版下载 该软件拥有丰富的统计分析功能&#xff0c;无论是描述性统计、推论性统计&#xff0c;还是高级的多元统计分析&am…

Jenkins + Docker 一键自动化部署 SpringBoot 应用最精简流程

本文章实现最简单全面的 Jenkins Docker Spring Boot 一键自动部署项目。步骤齐全&#xff0c;少走坑路。 环境&#xff1a;CentOS7 Git (Gitee) 实现步骤&#xff1a;在 Docker 安装 Jenkins&#xff0c;配置 Jenkins 基本信息&#xff0c;利用 Dockerfile 和 Shell 脚本…

Python LEGB规则

Python在查找“名称”时&#xff0c;是按照LEGB规则查找的&#xff1a; Local&#xff1a; 指的就是函数或者类的方法内部 Enclosed&#xff1a; 指的是嵌套函数&#xff08;一个函数包裹另一个函数&#xff0c;闭包&#xff09; Global&#xff1a; 指的是模块中的全局变量 Bu…

数学建模完整版

模型与适用题型 微分方程传染病预测模型 神经网络 层次分析法 粒子群算法 matlab 优劣解距离法

k-means聚类算法的MATLAB实现及可视化

K-means算法是一种无监督学习算法&#xff0c;主要用于数据聚类。其工作原理基于迭代优化&#xff0c;将数据点划分为K个集群&#xff0c;使得每个数据点都属于最近的集群&#xff0c;并且每个集群的中心&#xff08;质心&#xff09;是所有属于该集群的数据点的平均值。以下是…

AppleScript初体验,让你的mac实现自动化UI操作

AppleScript 简介 AppleScript是苹果公司开发的一种脚本语言&#xff0c;用于操作MacOS及其应用程序&#xff0c;在实现MacOS自动化工作方面非常给力。 我们可以使用AppleScript用来完成一些重复琐碎的工作&#xff0c;AppleScript具有简单自然的语法&#xff0c;另外系统也提…

十大排序——6.插入排序

这篇文章我们来介绍一下插入排序 目录 1.介绍 2.代码实现 3.总结与思考 1.介绍 插入排序的要点如下所示&#xff1a; 首先将数组分为两部分[ 0 ... low-1 ]&#xff0c;[ low ... arr.length-1 ]&#xff0c;然后&#xff0c;我们假设左边[ 0 ... low-1 ]是已排好序的部分…

APP开发_Android 与 js 互相调用

1 js 调用 Android 方法 当使用 JavaScript 调用 Android 原生方法时&#xff0c;主要涉及到 Android 的 WebView 组件&#xff0c;它允许你在 Android 应用中嵌入网页内容&#xff0c;并提供了 JavaScript 与 Android 代码交互的能力。 &#xff08;1&#xff09;创建JavaSc…

盲人安全导航技巧:科技赋能让出行更自如

作为一名资深记者&#xff0c;长期关注并报道无障碍领域的发展动态。今日&#xff0c;我将聚焦盲人安全导航技巧&#xff0c;探讨这一主题下科技如何赋能视障人士实现更为安全、独立的出行。一款融合了实时避障、拍照识别物体及场景功能的盲人出行辅助应用叫做蝙蝠避障&#xf…

OpenHarmony实战开发-Grid和List内拖拽交换子组件位置。

介绍 本示例分别通过onItemDrop()和onDrop()回调&#xff0c;实现子组件在Grid和List中的子组件位置交换。 效果图预览 使用说明&#xff1a; 拖拽Grid中子组件&#xff0c;到目标Grid子组件位置&#xff0c;进行两者位置互换。拖拽List中子组件&#xff0c;到目标List子组件…

Map与Set的模拟实现封装

目录 一. 底层原理 二. 红黑树节点的定义 三. 仿函数封装 四. 基本函数的封装 五. 迭代器的封装 5.1 迭代器的基本定义 5.2 *与->操作 5.3 迭代器的操作 5.3.1 右子树不为空 5.3.2 右子树为空 5.4 迭代器的--操作 5.4.1 当前节点的父节点…