爬取电商平台数据,python爬取某维商品数据
本次内容:
爬取电商平台数据,python爬取某维商品数据
课程亮点
- 动态数据抓包演示
- json数据解析
- requests模块的使用
- 保存csv
环境介绍
- python 3.8 [最好用和老师一样的版本]
- pycharm 2021.2 专业版 yyds
- requests >>> pip install requests
- csv
安装方法:
win + R 输入cmd 输入安装命令 pip install 模块名
如果出现爆红 可能是因为 网络连接超时 切换国内镜像源
相对应的安装包/安装教程/激活码/使用教程/学习资料/工具插件 可以私我领取哦~
思路流程: (爬虫最基本流程)
一. 数据来源分析
分析我们想要的数据 可以从哪里获取
通过开发者工具分析可得 一页商品 120条数据 他分为三组内容 50 50 20
每个url地址需要的商品ID 前50个ID为一组 中间50个ID为一组 最后20个ID为一组
去分析 我们商品ID从哪里来的…
如果想要通过爬取获取这些数据
- 首先获取所有商品ID
- 进行分组分类(切片) 前50 中50 后20
- 把这些传入 商品数据包里面 就可以得到 商品数据
二. 代码实现步骤
- 发送请求, 对于ID的网址发送你请求
- 获取数据, 获取服务器返回的数据内容
- 解析数据, 提取我们想要商品ID
- 发送请求, 把商品ID传入 商品数据包url里面
- 获取数据, 获取服务器返回的数据内容
- 解析数据, 提取我们想要商品数据信息
- 保存数据, 把数据保存csv表格文件
- 多页爬取
- 查看结果
爬虫 [模拟]浏览器对于服务器发送请求
首先导入模块
# 导入数据请求模块
import requests # pip install requests 在cmd里面或者pycharm终端里面安装
# 导入格式化输出模块
import pprint
# 导入csv模块
import csv
# 导入时间模块
import time
后续代码
# 创建一个csv文件
f = open('口红data.csv', mode='a', encoding='utf-8', newline='')
# 调用csv方法
csv_writer = csv.DictWriter(f, fieldnames=['标题','品牌','原价','折扣','售价','属性','详情页',
])
csv_writer.writeheader()headers = {# 'cookie': 'vip_cps_cuid=CU1641815302342da2eee44221f3c0d4; vip_cps_cid=1641815302345_f63fc9087855c60e21a2950b0189ec24; cps_share=cps_share; vip_wh=VIP_NH; cps=adp%3Antq8exyc%3A%40_%401641815302344%3Amig_code%3A4f6b50bf15bfa39639d85f5f1e15b10f%3Aac014miuvl0000b5sq8cx6g534o9fx83; PAPVisitorId=8d9d410e1944339b815ec911aa7f9714; vip_new_old_user=1; vip_address=%257B%2522pname%2522%253A%2522%255Cu5e7f%255Cu4e1c%255Cu7701%2522%252C%2522pid%2522%253A%2522104104%2522%252C%2522cname%2522%253A%2522%255Cu5e7f%255Cu5dde%255Cu5e02%2522%252C%2522cid%2522%253A%2522104104101%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; user_class=a; mst_area_code=104104; mars_sid=da8baa5d8a2c73dba298da602ff87292; mars_pid=0; visit_id=A7C92212D3DF003A212EB6666C36D2C3; 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; vip_access_times=%7B%22list%22%3A2%7D; pg_session_no=7; vip_tracker_source_from=; mars_cid=1641815303238_957cedc5b831e57207fd8334dcd97297','referer': 'https://category.vip.com/', # referer 防盗链 告诉服务器我们的请求的url地址 是从哪里跳转过来的# user-agent 用户代理 浏览器基本身份标识'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'
}def get_shop_info(shop_id):"""获取商品数据信息"""shop_url = 'https://mapi.vip.com/vips-mobile/rest/shopping/pc/product/module/list/v2'# 批量替换 选择要替换的内容 ctrl + R 输入 正则表达式命令data = {# 'callback': 'getMerchandiseDroplets1','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': '1641815303238_957cedc5b831e57207fd8334dcd97297','wap_consumer': 'a','productIds': shop_id,'scene': 'search','standby_id': 'nature','extParams': '{"stdSizeVids":"","preheatTipsVer":"3","couponVer":"v2","exclusivePrice":"1","iconSpec":"2x","ic2label":1}','context': '','_': '1641816680425',}response = requests.get(url=shop_url, params=data, headers=headers)# print(response.json())# pprint.pprint(response.json())products = response.json()['data']['products']for i in products:# pprint.pprint(i)# 创建一个字典 把数据内容传入字典shop_attrs_list = [j['name'] + ':' + j['value'] for j in i['attrs']]shop_attrs = ','.join(shop_attrs_list)href = f'https://www.vipglobal.hk/detail-{i["brandId"]}-{i["productId"]}.html'# ['色系:红调', '妆感:水润', ]dit = {'标题': i['title'],'品牌': i['brandShowName'],'原价': i['price']['marketPrice'],'折扣': i['price']['mixPriceLabel'],'售价': i['price']['salePrice'],'属性': shop_attrs,'详情页': href}# print(shop_attrs)csv_writer.writerow(dit)print(dit)for page in range(0, 601, 120):time.sleep(1)# 1. 发送请求, 对于ID的网址发送你请求url = 'https://mapi.vip.com/vips-mobile/rest/shopping/pc/search/product/rank' # 确定url地址# 请求参数data = {# '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': '1641815303238_957cedc5b831e57207fd8334dcd97297','wap_consumer': 'a','standby_id': 'nature','keyword': '口红','lv3CatIds': '','lv2CatIds': '','lv1CatIds': '','brandStoreSns': '','props': '','priceMin': '','priceMax': '','vipService': '','sort': '0','pageOffset': page,'channelId': '1','gPlatform': 'PC','batchSize': '120','_': '1641816680423',}# 请求头 把python代码伪装成浏览器发送请求(模拟成浏览器发送请求)# 发送请求response = requests.get(url=url, params=data, headers=headers)# 打印response数据 <Response [903]> 服务器给特定状态码 你请求失败了# <Response [200]> 200请求成功# 获取响应体什么数据response.json() 获取响应json字典数据# 字典取值 根据冒号左边的内容 提取冒号右边的内容# products = response.json()['data']['products']# lis = [] # 创建一个空列表# for index in products:# pid = index['pid']# lis.append(pid) # 往列表里面添加元素# # print(pid)# print(lis)pid_list = [index['pid'] for index in response.json()['data']['products']]# print(pid_list)# 切片 分为三组 前50 中间 50 最后 20# [起始:结束:步长] 不写起始默认是0 不写步长默认 1 不写结束默认到最后# split 字符串分割方法 strip 去除字符串左右两端空格# 用 , 把列表里面所有元素合并起来string_1 = ','.join(pid_list[:50])string_2 = ','.join(pid_list[50:100])string_3 = ','.join(pid_list[100:])# 把列表转成字符串 join# string_4 = ','.join(pid_list)get_shop_info(string_1)get_shop_info(string_2)get_shop_info(string_3)
模块安装问题:
如果安装python第三方模块:
- win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车
- 在pycharm中点击Terminal(终端) 输入安装命令
安装失败原因:
失败一:
pip 不是内部命令
解决方法: 设置环境变量
失败二: 出现大量报红 (read time out)
解决方法: 因为是网络链接超时, 需要切换镜像源
清华:https://pypi.tuna.tsinghua.edu.cn/simple
阿里云:http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
华中理工大学:http://pypi.hustunique.com/
山东理工大学:http://pypi.sdutlinux.org/
豆瓣:http://pypi.douban.com/simple/
例如:pip3 install -i https://pypi.doubanio.com/simple/ 模块名
失败三: cmd里面显示已经安装过了, 或者安装成功了, 但是在pycharm里面还是无法导入
解决方法: 可能安装了多个python版本 (anaconda 或者 python 安装一个即可)
卸载一个就好或者你pycharm里面python解释器没有设置好
如何配置pycharm里面的python解释器?
- 选择file(文件) >>> setting(设置) >>> Project(项目) >>> python interpreter(python解释器)
- 点击齿轮, 选择add
- 添加python安装路径
pycharm如何安装插件?
- 选择file(文件) >>> setting(设置) >>> Plugins(插件)
- 点击 Marketplace 输入想要安装的插件名字 比如:翻译插件 输入 translation / 汉化插件 输入 Chinese
- 选择相应的插件点击 install(安装) 即可
- 安装成功之后 是会弹出 重启pycharm的选项 点击确定, 重启即可生效
好了,我的这篇文章写到这里就结束啦!
有更多建议或问题可以评论区或私信我哦!一起加油努力叭(ง •_•)ง
喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!
爬取电商平台数据,python爬取某维商品数据相关推荐
- pyhton爬虫 爬取电商平台商品历史价格、最低价格(慢慢买网)
主要使用的库: requests:爬虫请求并获取源码 re:使用正则表达式提取数据 json:使用JSON提取数据 pandas:使用pandans存储数据 #!coding=utf-8 import ...
- Python爬虫实战:selenium爬取电商平台商品数据
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 极客挖掘机 PS:如有需要Python学习资料的小伙伴可以加点击下 ...
- 【爬虫】Python爬取电商平台评论完整代码
利用Ajax爬取淘宝评论,这里完整的补充一下,包括数据存储. 对于Ajax参数的分析,Python爬取平台评论,这篇文章分析过了这里不再重复了. 主要是完善一下代码. import time impo ...
- Python爬取电商平台充气娃娃用户评价,看看用户体验是什么样的!
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...
- Python抓取电商平台数据 / 采集商品评论 / 可视化展示 词云图...
前言 大家早好.午好.晚好吖 ❤ ~ 我给大家准备了一些资料,包括: 2022最新Python视频教程.Python电子书10个G (涵盖基础.爬虫.数据分析.web开发.机器学习.人工智能.面试题) ...
- 获取各大电商平台,item_get_app - 获得淘宝app商品详情原数据API返回数据说明
今天跟大家分享的是item_get_app - 获得淘宝app商品详情原数据API返回数据说明 item_get_app 获得淘宝商品详情 [查看演示] API测试工具 注册链接(获取Key和sec ...
- 淘宝等电商平台API接口评论,item_review-获得商品评论
item_review-获得商品评论 公共参数 请求地址: https://console.open.onebound.cn/console/?i=Anzexihttps://console.open ...
- 如何对一个B2C电商平台数据建模-3-订单
综述 假定为一个B2C的电商公司 对于一般的零售或者生产公司来说,订单/采购单收入和成本的最大来源.本章主要讨论如何建立一个通用的销售订单和采购单模型 原文见:数据建模3-订单 逻辑模型 订单相关业务 ...
- css网页设计实例代码_大型电商平台设计实例:电商平台项目工程、数据库选型、代码库...
电商平台微服务体系架构 经过一系列的微服务设计, 下面使用一张维导图完整表示这个电商平台的微服务架构设计模型,如图 3-6 示. 这是一个为简单的电商平台微服务架构设计模型,并且使用了粗粒度的微服务划 ...
最新文章
- 【拒绝一问就懵】之Activity的启动流程
- Solr搜索的排序打分规则探讨
- 批量修改历史commit的用户名user.name邮箱user.email
- Excel删除区域名
- SpringBoot视频教程
- 学python买什么书-书单狗 篇一:小白学Python,到底要看多少书?
- SQL 宝典(本人总结供学习使用)
- Android 自定义View关于measure流程的基本思路整理
- Appium系列教程
- 状压DP——子集DP
- Pr导入ass字幕的解决方案——将ass字幕转为mov视频格式
- 数据驱动测试(DDT)入门
- 永远无法实现的“诚实“
- Room的基本使用(一)
- 微服务之springCloud-docker-comsumer(三)
- 【微信小程序】组件覆盖 z-index
- 练习二:工作日天气预报
- ISO 18184纺织品抗病毒活性的测定
- 整理CDC捕获消息后发送到kafka各类消息格式
- 什么是python中的惰性评估
热门文章
- GBase 8a 审计策略配置
- python中的rt_TensorRTSamplePython[introductory_parser_samples]
- 程序设计基础python3期末考试河南牧业经济学院_河南牧业经济学院
- 本地白嫖AI绘画 ,Stable Diffusion 初探!
- chatgpt职场办公-excel表格怎么设置类别编号
- Windows Live Mail设置(存储,删除,保存)
- mongodb gridfs java_MongoDB基于GridFS管理文件
- 《童虎学习笔记》11分钟学会MySQL基于时间点的恢复(gtid方式)
- 数学小天才游戏c语言,跪求C语言“数学小天才”小游戏 , 窗口将出现一个由数字组成的简单算...
- 线性代数之 矩阵的特征值,特征向量,特征分解