一、解决方案
二、电商数据的爬取和清洗
2.1 Python爬取京东手机销售历史数据
1).环境
python3 环境、第三方包有 scrapy,re Pycharm 、NotePad++、SublimeText 等代码编辑工具
2).爬虫步骤
采用 scrapy 爬虫框架编写爬虫脚本,选取核心代码讲解爬取京东手机销售数据的爬取逻辑。具体步骤如下:
1> 获取电商网站目标数据信息
2>根据手机品牌作为搜索关键词
withopen('./mobile_project/data/手机品牌.csv','r', encoding='utf-8') asf: csv_reader=csv.reader(f) # 通 过 csv 按 行 读 取 for brand in csv_reader: brand=brand[0] print('++++++++++crawling:{}'.format(brand)) if brand.strip(): brand=brand.strip()+' 手机' yield Request (jd_search_url.format(kw=brand, page=page),headers=self.headers, meta={'kw':brand,'page':page}, callback=self.parse_search_result)
3>查看商品详情请求的 api
4>明确解析字段
5>明确商家信息
6>循环爬取
7>存储到csv
爬取结果示例:
{ "name":"努比亚 nubia Z18 全面屏 3.0 极夜黑 8GB+128GB 全网通移 动联通电信 4G 手机 双卡双待",
"custom_attr_list":"6.0 英寸^8GB^128GB^2400 万+1600 万像素^骁龙 845(SDM845)^800 万像素^2160*1080^8.55", "shop_name":"努比亚京东自营旗舰店", "comment_count":"13266", "good_rate":"97", "shop_id":"1000001961", "id":"100000047414", "price":"2549.00", "url":"https://item.jd.com/100000047414.html", "keyword":"努比亚(nubia) 手机", "prop":{ "品牌":"努比亚(nubia)", "型号":"Z18", "入网型号":"NX606J", "上市年份":"2018 年", "上市月份":"9 月", "机身颜色":"黑色", "机身长度(mm)":"148.58", "机身宽度(mm)":"72.54", "机身厚度(mm)":"8.55", "机身重量(g)":"172", "输入方式":"触控", "运营商标志或内容":"无", "机身材质分类":"金属边框|玻璃后盖", "屏占比":"91.8%", "操作系统":"Android", "操作系统版本":"nubiaUI6.0", "CPU 品牌":"骁龙(Snapdragon)", "CPU 频率":"2.8GHz", "CPU 核数":"八核", "CPU 型号":"骁龙 845(SDM845)", "双卡机类型":"双卡双待单通", "最大支持 SIM 卡数量":"2 个", "SIM 卡类型":"NanoSIM", "4G 网络":"4G:移动(TD-LTE)|4G:联通(FDD-LTE)|4G:电信 (FDD-LTE)|4G:联通(TD-LTE)|电信(TD-LTE)", "3G/2G 网络":"3G:移动(TD-SCDMA)|3G:联通(WCDMA)|3G:电 信(CDMA2000)|2G:移动联通(GSM)+电信(CDMA)", "副 SIM 卡类型":"NanoSIM", "副 SIM 卡 4G 网络":"4G:移动(TD-LTE)|4G:联通(FDD-LTE)|4G: 电信(FDD-LTE)|不支持主副卡同时使用电信卡|4G:联通(TD-LTE)", "4G+(CA)":"移动 4G+|联通 4G+|电信 4G+", "高清语音通话(VOLTE)":"移动 VOLTE|电信 VOLTE", "网络频率(2G/3G)":"2G:GSM 850/900/1800/1900|2G:CDMA 800|3G : TD-SCDMA 1900/2000|3G : WCDMA 850/900/1900/2100|3G : CDMA2000|2G:GSM 900/1800|2G:GSM 900/1800/1900|3G:CDMA 800MHz 1X&EVDO|3G:WCDMA:850/900/1700/1900/2100MHz|TD-SCDMA1880/2010", "是否支持同时使用联通卡":"支持双卡同时在线,并同时使用联通 4G 移动数据", "ROM":"128GB", "ROM 类型":"UFS", "RAM":"8GB", "RAM 类型":"LPDDR 4X", "存储卡":"不支持", "主屏幕尺寸(英寸)":"6.0 英寸", "分辨率":"2160*1080", "屏幕像素密度(ppi)":"403", "屏幕材质类型":"LTPS", "屏幕生产厂商":"JDI", "亮度":"500(type)", "对比度":"1500(type)", "前置摄像头":"800 万像素", "前摄光圈大小":"f/2.0", "美颜技术":"支持", "摄像头数量":"2 个", "后置摄像头":"2400 万+1600 万像素", "摄像头光圈大小":"其他", "闪光灯":"双色温灯", "副摄像头光圈大小":"其他", "拍照特点":"防抖|美颜|连拍|微距|全景|滤镜|场景模式|HDR|PDAF| 微信小视频|水印", "电池容量(mAh)":"3450", "电池类型":"锂电池", "电池是否可拆卸":"否", "充电器":"9V/2A", "数据传输接口":"WIFI|NFC|蓝牙|WiFi 热点|OTG 接口", "NFC/NFC 模式":"支持(点对点模式) |支持(读卡器模式) |支持(卡 模式)|支持卡模拟", "耳机接口类型":"Type-C", "充电接口类型":"Type-C", "数据线":"USB2.0", "指纹识别":"支持", "语音识别":"支持", "GPS":"支持", "电子罗盘":"支持", "陀螺仪":"支持", "红外遥控":"不支持", "其他":"距离感应|呼吸灯|多麦降噪技术|光线感应", "常用功能":"录音|便签|重力感应" } }