记一次简单的电商网站python爬虫练习
一、分析电商网站源码结构
1 确定目标网页并找到文件
使用Chrome浏览器,打开京东华为手机页面,网址为:https://item.jd.com/10026765609672.html
按键盘上的F12键,进入开发者工具页面。点击开发者工具里的“NetWork”,再点击商品详情页里的“商品评论”,就可以看到浏览器请求的数据文件。
我们随便复制一句评论,在网页源码中查找,发现并没有找到评论内容,说明jd的评论页面并非静态网页。
利用Filter过滤网址,输入comment,查找相关的网址请求url,此请求就是获取商品评论内容。
在response中查看数据,可以找出保存评论数据的js文件。
文件链接:https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=10026765609672&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1
相应地切换到【Preview】,可以看到这是一个json串,包含很多信息,包括10条评论。
2 切换评论页数,确定url规则
将评论切换至第二页、第三页。
根据上述分析,我们发现获得评论数据的请求url为:
第一页:https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=10026765609672&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1
第二页:https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=10026765609672&score=0&sortType=5&page=1&pageSize=10&isShadowSku=0&fold=1
第三页:https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=10026765609672&score=0&sortType=5&page=2&pageSize=10&isShadowSku=0&fold=1
二、分析电商评论部分字段含义
首先看下返回的Json形式的评论,可以看到格式比较混乱,可读性较差
想办法格式化一下,访问代码格式化工具https://www.sojson.com/,使用此工具,对Json评论进行格式化。
可以看到如下格式比较清晰的效果:
在结构化的Json中,查找有用的信息。
- productCommentSummary 存储了对该商品全部评论的汇总信息;
- comments 存储了当前页面的10条评论数据
"productCommentSummary": {
"skuId": 10026765609672,
"averageScore": 5, //平均分
"defaultGoodCount": 0,
"defaultGoodCountStr": "100+",
"commentCount": 0,
"commentCountStr": "200+", //评论数
"goodCount": 0,
"goodCountStr": "77", //好评数
"goodRate": 0.98,
"goodRateShow": 98, //好评率
"generalCount": 0,
"generalCountStr": "0",
"generalRate": 0.0,
"generalRateShow": 0,
"poorCount": 0,
"poorCountStr": "1", //差评数
"poorRate": 0.02,
"poorRateShow": 2, //差评率
"videoCount": 0,
"videoCountStr": "5", //视频数量
"afterCount": 0,
"afterCountStr": "2",
"showCount": 0,
"showCountStr": "26",
"oneYear": 0,
"sensitiveBook": 0,
"fixCount": 0,
"plusCount": 0,
"plusCountStr": "0",
"buyerShow": 0,
"poorRateStyle": 3,
"generalRateStyle": 0,
"goodRateStyle": 147,
"installRate": 0,
"productId": 10026765609672,
"score1Count": 1,
"score2Count": 0,
"score3Count": 0,
"score4Count": 0,
"score5Count": 77
},
comments中一条评论的结构:
"id": 15350638073,
"guid": "baa252551edeb827bec65ee9416d9e6a",
"content": "折叠大屏,分屏应用是这手机最大亮点 \n拍照效果,很清楚,现在的手机都是一天一充…通信音质挺清楚的 \n这配置运行速度很快快。大屏看电视确实比其他手机爽", //评论内容
"creationTime": "2021-02-25 10:50:48", //评论时间
"isDelete": false, //是否删除
"isTop": false, //是否置顶
"userImageUrl": "storage.360buyimg.com/i.imageUpload/33333730363635343131343638323736373335393937_sma.jpg",
"topped": 1,
"replies": [],
"replyCount": 31,
"score": 5, //评分
"imageStatus": 1,
"title": "",
"usefulVoteCount": 15,
"userClient": 4,
"discussionId": 870313391,
"imageCount": 5,
"anonymousFlag": 1,
"plusAvailable": 103,
"mobileVersion": "",
"images": [{
"id": 1369933751,
"imgUrl": "//img30.360buyimg.com/n0/s128x96_jfs/t1/164195/32/9198/73507/60371087Ec23acc2f/4c0fd92eb3617fa5.jpg",
"imgTitle": "",
"status": 0
}, {
"id": 1369933752,
"imgUrl": "//img30.360buyimg.com/n0/s128x96_jfs/t1/155330/19/19923/106563/60371087E0d19143a/d616d31f1f99f75a.jpg",
"imgTitle": "",
"status": 0
}, {
"id": 1369933753,
"imgUrl": "//img30.360buyimg.com/n0/s128x96_jfs/t1/169703/10/7828/51665/60371088Ece65b24d/dad4551a6619f823.jpg",
"imgTitle": "",
"status": 0
}, {
"id": 1369933754,
"imgUrl": "//img30.360buyimg.com/n0/s128x96_jfs/t1/171475/16/7788/43421/60371088E4e402b5d/b297d59b79213638.jpg",
"imgTitle": "",
"status": 0
}, {
"id": 1369933755,
"imgUrl": "//img30.360buyimg.com/n0/s128x96_jfs/t1/155068/39/19526/27160/60371088E732cb76f/32787df1efcb0a46.jpg",
"imgTitle": "",
"status": 0
}],
"mergeOrderStatus": 2,
"productColor": "冰晶粉",
"productSize": "全网通256GB【套餐】",
"textIntegral": 0,
"imageIntegral": 0,
"status": 1,
"referenceId": "10026656336939",
"referenceTime": "2021-02-20 15:59:03", //收货时间
"nickname": "风***4", //用户昵称
"replyCount2": 48,
"userImage": "storage.360buyimg.com/i.imageUpload/33333730363635343131343638323736373335393937_sma.jpg",
"orderId": 0,
"integral": 0,
"productSales": "[]",
"referenceImage": "jfs/t1/168319/35/12598/182767/604845edE4db70731/04c7035beff3b76d.jpg",
"referenceName": "华为Mate X2/MateX2新款折叠屏手机5G手机【分期可选】 冰晶蓝+ 全网通512GB【白条24期免息】", //购买商品名称
"firstCategory": 9987, //第一分类
"secondCategory": 653, //第二分类
"thirdCategory": 655, //第三分类
"aesPin": null,
"days": 5,
"afterDays": 0
了解了相关字段含义,下面开始使用scrapy框架,编写爬虫,爬取商品评论。
三、搭建爬虫代码框架
打开pycharm 使用命令创建scrapy项目文件
scrapy startproject jdspider
[c-alert type="warning"]如果未安装scrapy框架可以在terminal中使用命令:pip install scrapy 安装[/c-alert]
创建成功如图:
相关文章
- [Python 爬虫]煎蛋网 OOXX 妹子图爬虫(1)——解密图片地址
- python实现矩阵的转置_Python实现矩阵转置的方法分析
- python 生成数组_Python创建数组「建议收藏」
- python编程是什么-Python编程
- 哪些软件是python编写出来的_用Python编程需要什么软件?
- python中的pop函数和append函数
- python垃圾回收机制原理
- Python机器学习教程—线性回归的实现(不调库和调用sklearn库)
- 【说站】python引用计数机制的使用
- python lambda表达式举例_Python中lambda表达式[通俗易懂]
- [GSEAPY] 在Python里进行基因集富集分析
- 人生苦短,我用Python-手把手教你如何使用python写串口调试助手
- Python爬虫 | 美国特斯拉充电桩位置信息(含经纬度)爬取
- Python分布式爬虫框架Scrapy 打造搜索引擎(四) - 爬取博客网站
- 看完这个,还不会【Python爬虫环境】,请你吃瓜
- 画【Python折线图】的一百个学习报告(二、pyecharts引入js文件)
- python套接字多线程文件传输(大文件切割) - 协程async动态添加任务
- 使用python把pdf转化成word
- Python 进阶指南(编程轻松进阶):十六、面向对象编程和继承
- Python基础语法-函数-生成器函数
- Python tempfile模块:生成临时文件和临时目录
- Linux系统下安装Python模块指南(linux安装python模块)
- Python实现爬取知乎神回复简单爬虫代码分享
- python编写网页爬虫脚本并实现APScheduler调度
- Python写的服务监控程序实例