爬虫案例 --唯品会口红数据爬取(附源码)

2024-01-05 12:04

本文主要是介绍爬虫案例 --唯品会口红数据爬取(附源码),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

"""
====================================================================项目名称: 唯品会商品数据爬取
项目描述: 通过requests框架获取网页数据
项目环境: pycharm && python3.8
作者所属: 几许====================================================================一 . 抓包1. 对唯品会官网进行分析 -- 通过筛选直接搜索商品信息获得商品数据包https://mapi.vip.com/vips-mobile/rest/shopping/pc/product/module/list/v22. 对商品数据包进行分析 -- 一页数据分为三部分{50,50,20},不同商品含有一个产品信息的编码3. 获取本页所有产品信息的编码 -- 对编码进行检索 , 获得数据包https://mapi.vip.com/vips-mobile/rest/shopping/pc/search/product/rank二 . 代码实现1. 定义产品信息数据请求函数得到数据包 -- 一次请求只能得到120条数据2. 通过for循环进行翻页处理得到全部信息3. 解析获得所需要的数据 , 通过表格保存===================================================================="""import requests
from jsonpath import jsonpath
import re,json
from pprint import pprint
import time
import csvclass Spider():def __init__(self):self.headers = {'authority': 'mapi.vip.com','accept': '*/*','accept-language': 'zh-CN,zh;q=0.9','cookie': 'vip_cps_cuid=CU1703946155093f91b22c68d55b7591; vip_cps_cid=1703946155095_f8aebf721aa4d69f55487762e3ca4c21; cps_share=cps_share; PAPVisitorId=58460c7a22e31f6b4acb2a1ed741f921; vip_new_old_user=1; vip_city_name=%E5%B9%BF%E5%B7%9E%E5%B8%82; mars_cid=1703946163504_4eebec221de3364e0da3bbe4a2182454; VipUINFO=luc%3Aa%7Csuc%3Aa%7Cbct%3Ac_new%7Chct%3Ac_new%7Cbdts%3A0%7Cbcts%3A0%7Ckfts%3A0%7Cc10%3A0%7Crcabt%3A0%7Cp2%3A0%7Cp3%3A1%7Cp4%3A0%7Cp5%3A0%7Cul%3A3105; mars_pid=0; vip_address=%257B%2522pname%2522%253A%2522%255Cu5b89%255Cu5fbd%255Cu7701%2522%252C%2522pid%2522%253A%2522103104%2522%252C%2522cname%2522%253A%2522%255Cu5e7f%255Cu5dde%255Cu5e02%2522%252C%2522cid%2522%253A%2522103104114%2522%257D; vip_province=103104; vip_province_name=%E5%AE%89%E5%BE%BD%E7%9C%81; vip_city_code=103104114; vip_wh=VIP_HZ; vip_ipver=31; user_class=a; cps=adp%3Antq8exyc%3A%40_%401704022867205%3Amig_code%3A4f6b50bf15bfa39639d85f5f1e15b10f%3Aac014miuvl0000b5sq8crnthcjdwurb0; mars_sid=ef0bd4aed17dd0eb261cda2a1a73e9d8; visit_id=43601963E9569AF31FBF7F1561D38FC9; vipshop_passport_src=https%3A%2F%2Fcategory.vip.com%2Fsuggest.php%3Fkeyword%3D%25E5%258F%25A3%25E7%25BA%25A2%26ff%3D235%7C12%7C1%7C1; vip_tracker_source_from=; vip_access_times=%7B%22list%22%3A0%2C%22detail%22%3A2%7D; pg_session_no=6; VipDFT=1','referer': 'https://category.vip.com/','sec-ch-ua': '"Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120"','sec-ch-ua-mobile': '?0','sec-ch-ua-platform': '"Windows"','sec-fetch-dest': 'script','sec-fetch-mode': 'no-cors','sec-fetch-site': 'same-site','user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'}self.home_url = 'https://mapi.vip.com/vips-mobile/rest/shopping/pc/product/module/list/v2'self.num = 1def praseHomedata(self,product):try:self.sub_data = {'callback': ' getMerchandiseDroplets1','app_name': ' shop_pc','app_version': ' 4.0','warehouse': ' VIP_HZ','fdc_area_id': ' 103104114','client': ' pc','mobile_platform': ' 1','province_id': ' 103104','api_key': ' 70f71280d5d547b2a7bb370a529aeea1','user_id': ' ','mars_cid': ' 1703946163504_4eebec221de3364e0da3bbe4a2182454','wap_consumer': ' a','productIds': product,'scene': ' search','standby_id': ' nature','extParams': ' {"stdSizeVids":"","preheatTipsVer":"3","couponVer":"v2","exclusivePrice":"1","iconSpec":"2x","ic2label":1,"superHot":1,"bigBrand":"1"}','context': ' ','_': ' 1704027272052',}time.sleep(1)response = requests.get(self.home_url,headers=self.headers,params=self.sub_data).textjson_data = response.split('getMerchandiseDroplets1(')[1]data = re.sub('\)', '', json_data)json_msg = json.loads(data)for i in json_msg['data']['products']:attrs = jsonpath(i,'$..value')[0]dict = {"标题" : i['title'],"品牌" : i['brandShowName'],"原价" : i['price']['marketPrice'],"折扣" : i['price']['saleDiscount'],"现价" : i['price']['salePrice'],"属性" : attrs}pprint(dict)print('===========================================')csv_write.writerow(dict)except:print("爬取完毕")def praseSubpage(self):for page in range(0, 2400, 120):print(f"正在爬取第{self.num}页")# 商品详情链接# 产品编码数据sub_url = f"https://mapi.vip.com/vips-mobile/rest/shopping/pc/search/product/rank?callback=getM" \f"erchandiseIds&app_name=shop_pc&app_version=4.0&warehouse=VIP_HZ&fdc_area_id=10310411" \f"4&client=pc&mobile_platform=1&province_id=103104&api_key=70f71280d5d547b2a7bb370a529a" \f"eea1&user_id=&mars_cid=1703946163504_4eebec221de3364e0da3bbe4a2182454&wap_consumer=a&" \f"standby_id=nature&keyword=%E5%8F%A3%E7%BA%A2&lv3CatIds=&lv2CatIds=&lv1CatIds=&brandSt" \f"oreSns=&props=&priceMin=&priceMax=&vipService=&sort=0&pageOffset={page}&channelId=1&g" \f"Platform=PC&batchSize=120&_=1704022901946"# 请求链接得到字典response = requests.get(sub_url, headers=self.headers).text# 获得产品编码data = re.findall('{"pid":"(.*?)"}', response)# 合并字符串product1 = ','.join(data[0:50])product2 = ','.join(data[50:100])product3 = ','.join(data[100:120])self.praseHomedata(product1)self.praseHomedata(product2)self.praseHomedata(product3)self.num += 1if __name__ == '__main__':with open('唯品会口红数据.csv', 'a', encoding='utf-8', newline='')as f:csv_write = csv.DictWriter(f, fieldnames=["标题", "品牌", "原价", "折扣", "现价", "属性"])csv_write.writeheader()spider = Spider()spider.praseSubpage()

这篇关于爬虫案例 --唯品会口红数据爬取(附源码)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/572802

相关文章

批量导入txt数据到的redis过程

《批量导入txt数据到的redis过程》用户通过将Redis命令逐行写入txt文件,利用管道模式运行客户端,成功执行批量删除以Product*匹配的Key操作,提高了数据清理效率... 目录批量导入txt数据到Redisjs把redis命令按一条 一行写到txt中管道命令运行redis客户端成功了批量删除k

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

解决pandas无法读取csv文件数据的问题

《解决pandas无法读取csv文件数据的问题》本文讲述作者用Pandas读取CSV文件时因参数设置不当导致数据错位,通过调整delimiter和on_bad_lines参数最终解决问题,并强调正确参... 目录一、前言二、问题复现1. 问题2. 通过 on_bad_lines=‘warn’ 跳过异常数据3

RabbitMQ消费端单线程与多线程案例讲解

《RabbitMQ消费端单线程与多线程案例讲解》文章解析RabbitMQ消费端单线程与多线程处理机制,说明concurrency控制消费者数量,max-concurrency控制最大线程数,prefe... 目录 一、基础概念详细解释:举个例子:✅ 单消费者 + 单线程消费❌ 单消费者 + 多线程消费❌ 多

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +

java如何实现高并发场景下三级缓存的数据一致性

《java如何实现高并发场景下三级缓存的数据一致性》这篇文章主要为大家详细介绍了java如何实现高并发场景下三级缓存的数据一致性,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 下面代码是一个使用Java和Redisson实现的三级缓存服务,主要功能包括:1.缓存结构:本地缓存:使

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分

C#解析JSON数据全攻略指南

《C#解析JSON数据全攻略指南》这篇文章主要为大家详细介绍了使用C#解析JSON数据全攻略指南,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、为什么jsON是C#开发必修课?二、四步搞定网络JSON数据1. 获取数据 - HttpClient最佳实践2. 动态解析 - 快速

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更