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

 获取标头:

响应:服务器返回的数据

预览:查看响应得数据

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

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

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

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

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

获取商品所有ID.

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

"""
使用模块
    requests
    csv
代码步骤
    发送请求
    获取数据
    解析数据
    保存数据
第一次请求:请求商品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文件。

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

  • 27
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值