前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理

双十一期间,各大平台都的商品都在打折,哪些店铺的折扣是最低的

本次目标

爬取唯品会口红商品数据

https://category.vip.com/suggest.php?keyword=%E5%8F%A3%E7%BA%A2&ff=235%7C12%7C1%7C1&page=3

环境

Python3.6

pycharm

下面我们先来解析下网页

通过开发者工具可以看到,网页并没有返回我们想要的商品数据,所以打算直接复制网页数据进行搜索查找

如上图所示,复制商品名字,在开发者工具里面直接搜索,可以看到相关的数据包,里面包含了商品标题、售价、原价、折扣以及商品的其他数据信息。

既然这个接口里面有想要的数据了,那接下来就是分析URL怎么样才能获取这个URL,因为这个数据包里面只有50条数据,然而唯品会一页是有120条数据的。

想要找到url的变化规律,那么就需要你自己多去看几个数据,同样的方法一个数据接口只要五十条数据,那么就可以选择第51条数据或者后面的数据去搜索,查找相对应的数据接口,通过一系列的对比发现,url中的参数productIds 的变化,参数中就是每个商品ID值了,那问题来了,怎么才能获取商品的ID值呢?其实方法和上面的一样,复制ID值找到相关的数据接口。

这里面就有这一整页 120个商品的id值,问题它又双叒叕,总不能只爬取一页的数据吧,所以还要分析获取ID值每一页的url变化,还是一样想知道url的变化规律多看几页就知道了~
这里就省略了~

  • 第一页

  • 第二页

pageOffset参数的变化每120个数据翻一页嘛,ID都获取了,前面也看到每个商品数据接口对应的是50条数据,经过分析就知道 120个商品划分为是三个 50,50,20 分别传入相对应的商品ID就可以了。

开始爬虫的代码

导入工具

import requests
import re
import csv

请求网页

def get_data(num_id):data_url = 'https://mapi.vip.com/vips-mobile/rest/shopping/pc/product/module/list/v2'headers = {# 'cookie': 'vip_address=%257B%2522pid%2522%253A%2522104104%2522%252C%2522cid%2522%253A%2522104104101%2522%252C%2522pname%2522%253A%2522%255Cu5e7f%255Cu4e1c%255Cu7701%2522%252C%2522cname%2522%253A%2522%255Cu5e7f%255Cu5dde%255Cu5e02%2522%257D; vip_province=104104; vip_province_name=%E5%B9%BF%E4%B8%9C%E7%9C%81; vip_city_name=%E5%B9%BF%E5%B7%9E%E5%B8%82; vip_city_code=104104101; vip_wh=VIP_NH; vip_ipver=31; mars_pid=20; cps=adp%3Ag1o71nr0%3A%3A%3A%3A; user_class=a; 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%3A1%7Cul%3A3105; mars_sid=a46fb0bf05a51955082f9a561da8893a; visit_id=B288281FDDBDD306C6D856C9D2959935; vip_tracker_source_from=; pg_session_no=11; mars_cid=1602569282048_0b4beb3d18306a0a0143c359ddb34fae','referer': 'https://category.vip.com/suggest.php?keyword=%E5%8F%A3%E7%BA%A2&ff=235%7C12%7C1%7C1&page=3','user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'}params = {'callback': 'getMerchandiseDroplets2','app_name': 'shop_pc','app_version': '4.0','warehouse': 'VIP_NH','fdc_area_id': '104104101','client': 'pc','mobile_platform': '1','province_id': '104104','api_key': '70f71280d5d547b2a7bb370a529aeea1','user_id': '','mars_cid': '1602569282048_0b4beb3d18306a0a0143c359ddb34fae','wap_consumer': 'a','productIds': '{}'.format(num_id),'scene': 'search','standby_id': 'nature','extParams': '{"stdSizeVids":"","preheatTipsVer":"3","couponVer":"v2","exclusivePrice":"1","iconSpec":"2x"}','context': '','_': '1603721644366',}response_2 = requests.get(url=data_url, params=params, headers=headers)for page in range(0, 1201, 120):url = 'https://mapi.vip.com/vips-mobile/rest/shopping/pc/search/product/rank'headers = {# 'cookie': 'vip_address=%257B%2522pid%2522%253A%2522104104%2522%252C%2522cid%2522%253A%2522104104101%2522%252C%2522pname%2522%253A%2522%255Cu5e7f%255Cu4e1c%255Cu7701%2522%252C%2522cname%2522%253A%2522%255Cu5e7f%255Cu5dde%255Cu5e02%2522%257D; vip_province=104104; vip_province_name=%E5%B9%BF%E4%B8%9C%E7%9C%81; vip_city_name=%E5%B9%BF%E5%B7%9E%E5%B8%82; vip_city_code=104104101; vip_wh=VIP_NH; vip_ipver=31; mars_pid=20; cps=adp%3Ag1o71nr0%3A%3A%3A%3A; user_class=a; 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%3A1%7Cul%3A3105; mars_sid=a46fb0bf05a51955082f9a561da8893a; visit_id=B288281FDDBDD306C6D856C9D2959935; vip_tracker_source_from=; pg_session_no=11; mars_cid=1602569282048_0b4beb3d18306a0a0143c359ddb34fae','referer': 'https://category.vip.com/suggest.php?keyword=%E5%8F%A3%E7%BA%A2&ff=235%7C12%7C1%7C1&page=3','user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'}params = {'callback': 'getMerchandiseIds','app_name': 'shop_pc','app_version': '4.0','warehouse': 'VIP_NH','fdc_area_id': '104104101','client': 'pc','mobile_platform': '1','province_id': '104104','api_key': '70f71280d5d547b2a7bb370a529aeea1','user_id': '','mars_cid': '1602569282048_0b4beb3d18306a0a0143c359ddb34fae','wap_consumer': 'a','standby_id': 'nature','keyword': '口红','lv3CatIds': '','lv2CatIds': '','lv1CatIds': '','brandStoreSns': '','props': '','priceMin': '','priceMax': '','vipService': '','sort': '0','pageOffset': '{}'.format(page),'channelId': '1','gPlatform': 'PC','batchSize': '120','_': '1603721644362',}response = requests.get(url=url, params=params, headers=headers)

解析网页数据

    titles = re.findall('"title":"(.*?)"', response_2.text, re.S)  # 标题salePrice = re.findall(',"salePrice":"(.*?)",', response_2.text, re.S)     # 售价marketPrice = re.findall('"marketPrice":"(.*?)"', response_2.text, re.S)     # 原价saleDiscount = re.findall('"saleDiscount":"(.*?)"', response_2.text, re.S)     # 折扣smallImage = re.findall('"smallImage":"(.*?)"', response_2.text, re.S)     # 商品图片地址lis = zip(titles, salePrice, marketPrice, saleDiscount, smallImage)dit = {}for li in lis:dit['商品名字'] = li[0]dit['售价'] = li[1]dit['原价'] = li[2]dit['折扣'] = li[3]dit['商品图片地址'] = li[4]csv_writer.writerow(dit)print(dit)

保存数据

f = open('唯品会商品数据.csv', mode='a', encoding='utf-8-sig', newline='')
csv_writer = csv.DictWriter(f, fieldnames=['商品名字', '售价', '原价', '折扣', '商品图片地址'])
csv_writer.writeheader()

运行代码,效果如下图

看到有几家原价100多,折后价是10元的,这种你确定是口红不是画笔?

爬取唯品会口红数据,这次哪家打折力度最大?我看到0.8折的相关推荐

  1. 程序员爬取 5000+ 口红数据,差点比女朋友更懂口红?

    作者 | YaJie 来源 | Giao数据 责编 | 王晓曼 摘要:本文以"口红"为关键字,爬取了[1]淘宝与天猫官网下100页口红数据,经过去重,得到共计4353条口红商品信息 ...

  2. 使用selenium爬取唯品会

    使用selenium爬取唯品会 1.基本步骤 2.通过程序控制浏览器下拉滚动条获取加载信息 3.完成这个爬虫程序 使用selenium爬取动态加载的网页,爬取唯品会的商品 1.基本步骤 首先,创建一个 ...

  3. 用Scrapy爬虫框架爬取食品论坛数据并存入数据库

    这篇文章主要给大家介绍了食品网站的数据采集和存储过程,详解了如何分析网页结构.爬虫策略.网站类型.层级关系.爬虫方法和数据存储过程,最终实现将帖子的每条评论爬取到数据库中,并且做到可以更新数据,防止重 ...

  4. python 柱状图上显示字体_Python爬取百部电影数据,我发现了这个惊人真相!

    2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%:国产电影总票房411.75亿元,同比增长8.65%,市场占比 ...

  5. python实现爬虫探探_全栈 - 9 实战 爬取豆瓣电影数据

    这是全栈数据工程师养成攻略系列教程的第九期:9 实战 爬取豆瓣电影数据. 掌握了爬虫的基本原理和代码实现,现在让我们通过实战项目巩固一下. 确定目标 在写爬虫之前应当想清楚:我需要哪方面的数据?需要包 ...

  6. python爬取百部电影数据,我分析出了一个残酷的真相

    2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%:国产电影总票房411.75亿元,同比增长8.65%,市场占比 ...

  7. python+appium爬取微信运动数据,并分析好友的日常步数情况

    python+appium爬取微信运动数据,并分析好友的日常步数情况 声明:仅供技术交流,请勿用于非法用途,如有其它非法用途造成损失,和本博客无关 目录 python+appium爬取微信运动数据,并 ...

  8. python为啥爬取数据会有重复_利用Python来爬取“吃鸡”数据,为什么别人能吃鸡?...

    原标题:利用Python来爬取"吃鸡"数据,为什么别人能吃鸡? 首先,神装镇楼 背景 最近老板爱上了吃鸡(手游:全军出击),经常拉着我们开黑,只能放弃午休的时间,陪老板在沙漠里奔波 ...

  9. python战反爬虫:爬取猫眼电影数据 (一)(Requests, BeautifulSoup, MySQLdb,re等库)

    姓名:隋顺意 博客:Sui_da_xia 微信名:世界上的霸主 本篇文章未涉及猫眼反爬,主要介绍爬取无反爬内容,战反爬内容请去 python战反爬虫:爬取猫眼电影数据 (二)(Requests, Be ...

最新文章

  1. PostgreSQL命令行方式登陆数据库
  2. 《LeetCode力扣练习》第6题 C语言版 (做出来就行,别问我效率。。。。)
  3. 异常“本机框架位于调用堆栈顶部,因此无法计算表达式的值”的解决办法
  4. js返回顶部和始终保持底部
  5. 64 位来临:微软 Visual Studio 2022 预览版今夏发布,更多功能一览
  6. 1-趣味解读DNS工作原理——转载疯猫网络科技
  7. mysql注入技巧原理_MySQL注入技巧总结
  8. 误删除了Oracle的dbf文件后的解决方法
  9. 在线客服系统可以帮助企业解决哪些问题?
  10. php yar安装,yar如何在linux下安装扩展
  11. c++11后面引入的新特性(三)
  12. 支付宝里面基金的猫腻?为什么计算对不上?
  13. java excel列宽自动换行_Excel单元格中数据如何自动换行以便适应单元格的大小
  14. ThinkPHP5部署项目问题1
  15. 值得一看的网络课程推荐(不限于计算机科学)
  16. Spring全家桶--SpringBoot
  17. vue 解决重复点击导航路由报错 问题
  18. 数字电压表单片机 c语言程序,单片机数字电压表(带仿真图C程序).docx
  19. C# 第六章『交互式图形界面』◆第2节:控件(2)ListView
  20. 【开源】基于Java+SpringBoot+Vue+ElementUI的超市管理系统

热门文章

  1. 图表说话之解析excel商务饼图做法
  2. 10Wqps评论中台,如何架构?B站是这么做的!!!
  3. 为什么每个语言都要和Java作比较?一文带你搞懂!
  4. php sql多字段求和,JSP_sql实现多字段求和并查询,下面就sql多字段求和并作为sql - phpStudy...
  5. 业务异步写mysql数据库_把重要的业务日志异步批量写入数据库
  6. 7-21 统计大写辅音字母 (15 分)
  7. 游戏打的菜?当然是延迟的锅啦~
  8. 关于Mac本中的Pycharm如何设置字体大小?
  9. 个人或团队项目怎么起包名
  10. Xshell6和Xftp6 破解免安装版,无窗口多开限制