点击上方“Python爬虫与数据挖掘”,进行关注

回复“书籍”即可获赠Python从入门到进阶共10本电子书

身着白衣,心有锦缎。

前言

大家好!我是古月星辰,大三本科生,数学专业,Python爬虫爱好者一枚。今天给大家带来JD数据的简单采集和可视化分析,希望大家可以喜欢。

一、目标数据

随着移动支付的普及,电商网站不断涌现,由于电商网站产品太多,由用户产生的评论数据就更多了,这次我们以京东为例,针对某一单品的评论数据进行数据采集,并且做简单数据分析。

二、页面分析

这个是某一手机页面的详情页,对应着手机的各种参数以及用户评论信息,页面URL是:

https://item.jd.com/10022971060622.html#none

然后通过分析找到评论数据对应的数据接口,如下图所示:

它的请求url:

https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_com
ment98& productId=10022971060622 &score=0&sortType=5& page=0 &pageSize=10&isShadowSk
u=0&fold=1

注意看到这两个关键参数     1. productId: 每个商品有一个id     2. page: 对应的评论分页

三、解析数据

对评论数据的url发起请求:

url:https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comm
ent98& productId=10022971060622 &score=0&sortType=5& page=0 &pageSize=10&isShado
wSku=0&fold=1

json.cn 打开json数据(我们的评论数据是以json形式与页面进行交互传输的),如下图所示:

分析可知,评论url中对应十条评论数据,对于每一条评论数据,我们需要获取3条数 据,contents,color,size(注意到上图的maxsize,100,也就是100*10=1000条评论)。

四、程序

1.导入相关库

import  requests
import  json
import  time
import  openpyxl  #第三方模块,用于操作Excel文件的
#模拟浏览器发送请求并获取响应结果
import random

2.获取评论数据

def get_comments(productId,page):url='https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId={0}&score=0&sortType=5&page={1}&pageSize=10&isShadowSku=0&fold=1'.format(productId,page) # 商品idresp=requests.get(url,headers=headers)#print(resp.text)  #响应结果进行显示输出s1=resp.text.replace('fetchJSON_comment98(','') #fetchJSON_comment98(s=s1.replace(');','')#将str类型的数据转成json格式的数据# print(s,type(s))# print('*'*100)res=json.loads(s)print(type(res))return res

3.获取最大页数(也可以不写)

def get_max_page(productId):dic_data=get_comments(productId,0)  #调用刚才写的函数,向服务器发送请求,获取字典数据return dic_data['maxPage']

4.提取数据

def get_info(productId):#调用函数获取商品的最大评论页数#max_page=get_max_page(productId)# max_page=10lst=[]  #用于存储提取到的商品数据for page in range(0,get_max_page(productId)):   #循环执行次数#获取每页的商品评论comments=get_comments(productId,page)comm_lst=comments['comments']   #根据key获取value,根据comments获取到评论的列表(每页有10条评论)#遍历评论列表,分别获取每条评论的中的内容,颜色,鞋码for item in comm_lst:   #每条评论又分别是一个字典,再继续根据key获取值content=item['content']  #获取评论中的内容color=item['productColor'] #获取评论中的颜色size=item['productSize'] #鞋码lst.append([content,color,size])  #将每条评论的信息添加到列表中time.sleep(3)  #延迟时间,防止程序执行速度太快,被封IPsave(lst)  #调用自己编写的函数,将列表中的数据进行存储

5.用于将爬取到的数据存储到Excel中

def save(lst):wk=openpyxl.Workbook () #创建工作薄对象sheet=wk.active  #获取活动表#遍历列表,将列表中的数据添加到工作表中,列表中的一条数据,在Excel中是 一行for item in lst:sheet.append(item)#保存到磁盘上wk.save('销售数据.xlsx')

6.运行程序

if __name__ == '__main__':productId='10029693009906' # 单品idget_info(productId)

五、简单数据

1.简单配置

# 导入相关库
import pandas as pd
import matplotlib.pyplot as plt
# 这两行代码解决 plt 中文显示的问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 由于采集的时候没有设置表头,此处设置表头
data = pd.read_excel('./销售数据.xlsx', header=None, names = ['comments','color','intro'] ) #
data.head()

2.手机颜色数量对比

x = ['白色','黑色','绿色','蓝色','红色','紫色']
y = [314,295,181,173,27,10]
plt.bar(x,y)
plt.title('各种颜色手机数量对比')
plt.xlabel('颜色')
plt.ylabel('数量')
# plt.legend() # 显示图例
plt.show()

可以看出用户购买的手机白色和黑色的机型比较多.占据了60%多。3.评论词云展示1)先要提取评论数据

import xlrd
def strs(row):values = "";for i in range(len(row)):if i == len(row) - 1:values = values + str(row[i])else:values = values + str(row[i])return values
# 打卡文件
data = xlrd.open_workbook("./销售数据.xlsx")
sqlfile = open("data.txt", "a")  # 文件读写方式是追加
table = data.sheets()[0]  # 表头
nrows = table.nrows  # 行数
ncols = table.ncols  # 列数
colnames = table.row_values(1)  # 某一行数据
# 打印出行数列数
for ronum in range(1, nrows):row = table.cell_value(rowx=ronum, colx = 0) #只需要修改你要读取的列数-1values = strs(row)  # 调用函数,将行数据拼接成字符串sqlfile.writelines(values + "\n")  # 将字符串写入新文件
sqlfile.close()  # 关闭写入的文件

2)词云展示

# 导入相应的库
import jieba
from PIL import Image
import numpy as np
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# 导入文本数据并进行简单的文本处理
# 去掉换行符和空格
text = open("./data.txt",encoding='gbk').read()
text = text.replace('\n',"").replace("\u3000","")# 分词,返回结果为词的列表
text_cut = jieba.lcut(text)
# 将分好的词用某个符号分割开连成字符串
text_cut = ' '.join(text_cut)

注意: 这里我们不能使用encoding='uth-8',会报出一个错误:

> 'utf-8' codec can't decode byte 0xd3 in position 0: invalid continuation byte

所以我们需要改成 gbk。

word_list = jieba.cut(text)
space_word_list = ' '.join(word_list)
print(space_word_list)
# 调用包PIL中的open方法,读取图片文件,通过numpy中的array方法生成数组
mask_pic = np.array(Image.open("./xin.png"))
word = WordCloud(font_path='C:/Windows/Fonts/simfang.ttf',  # 设置字体,本机的字体mask=mask_pic,  # 设置背景图片background_color='white',  # 设置背景颜色max_font_size=150,  # 设置字体最大值max_words=2000,  # 设置最大显示字数stopwords={'的'}  # 设置停用词,停用词则不在词云途中表示).generate(space_word_list)
image = word.to_image()
word.to_file('2.png')  # 保存图片
image.show()

最后得到的效果图,如下图所示:

大家好,我是古月星辰。需要本文完整代码的小伙伴,可以在后台回复关键字“京东手机”进行获取,觉得不错,记得点赞、收藏、转发三连支持噢!

在代码实现过程中,如果有遇到任何问题,请加我好友,我帮助解决哦!

------------------- End -------------------

往期精彩文章推荐:

  • 手把手教你用Python改造一款外星人入侵小游戏

  • 手把手教你用Python网络爬虫+自动化来创建一位属于你自己的虚拟女票(附源码)

  • Python也能操作Mysql数据库

  • 盘点那些年我们一起玩过的网络安全工具

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

想加入Python学习群请在后台回复【入群

万水千山总是情,点个【在看】行不行

/今日留言主题/

随便说一两句吧~~

手把手教你采集京东销售数据并做简单的数据分析和可视化相关推荐

  1. win10 uwp 手把手教你使用 asp dotnet core 做 cs 程序

    本文是一个非常简单的博客,让大家知道如何使用 asp dot net core 做后台,使用 UWP 或 WPF 等做前台. 本文因为没有什么业务,也不想做管理系统,所以看到起来是很简单. Visua ...

  2. 手把手教你用CAB发布OCX的简单办法

    手把手教你用CAB发布OCX的简单办法 CAB是一种文件压缩格式,把OCX文件(ActiveX插件)压缩成CAB文件是为了发布它, 这种发布方式给人感觉"浏览器会自动安装该插件", ...

  3. 手把手教你搭建ELK,原来这么简单

    思维导图 文章已收录Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary 概述 我们都知道,在生产环境中经常会遇到很多异常,报错信息 ...

  4. 手把手教你入门第一步!做西瓜头条自媒体,每天稳定收入200多

    很多人想做自媒体却不知道如何开始,今天这期内容就来教大家迈出自媒体的第一步. 记得点赞关注加收藏,不然想找我的时候你就找不到了. 最近一直在分享大周自己做自媒体的一些经验总结,有很多粉丝朋友私信问我, ...

  5. 重磅!全站首发,新鲜出炉,1024特辑,手把手教你采集 高德地图 搜索结果,获取全国海底捞信息并可视化

    高德地图是我们经常用的地图软件,今天我们以海底捞为例子,取全国的海底捞搜索结果为自己用!这里的方法只用于个人采集公开数据,请不要用于商业或违法用途! 因为整个C站还没有分享这方面技术的,所以我写一篇给 ...

  6. 资深程序媛手把手教你如何从零基础进行电影数据数据分析采集!

    本文是爬虫及可视化的练习项目,目标是爬取猫眼票房的全部数据并做可视化分析. 1.获取url 我们先打开猫眼票房http://piaofang.maoyan.com/dashboard?date=201 ...

  7. 采集+图谱可视化|手把手教你采集明星人物关系并进行图谱展示

    大家好,我是阿辰~ 今天教大家获取采集(某度百科)的明星人物关系数据,并进行图谱可视化展示. 亮点(难点): 1.动态查询(输入任意明星名字就可以查询该明星关系人物). 2.图谱展示(以及key-va ...

  8. python量化策略代码_手把手教你用三行python 代码做一个动量策略「量化投资系列」...

    动量策略是右侧交易里最常见的,背后的逻辑是就现在涨的,后市还会涨,动量具有惯性的意思. 首先加载原始数据,我们用天的收盘价即可,按统一转为收益率.因为点位本身不重要,我们最后只关心变化率. 以沪深30 ...

  9. 干货 | 手把手教你用115行代码做个数独解析器!(附代码)

    来源:大数据文摘 本文约4000字,建议阅读8分钟. 本文教你用代码做数独解析器. 你也是数独爱好者吗? Aakash Jhawar和许多人一样,乐于挑战新的难题.上学的时候,他每天早上都要玩数独.长 ...

最新文章

  1. 受用一生的高效PyCharm使用技巧(二)
  2. 厦门口岸检出今年首例登革热病例
  3. 网络资源(9) - TDD视频
  4. C++中实现Singleton的正确方法
  5. makefile格式-实践一
  6. C# WinFrom 去掉groupbox的边框
  7. 7-16 一元多项式求导 (20 分)(详解+题目分析)
  8. 均值差异大但是t检验不显著_T检验原理及介绍
  9. Ioc Autofac心得
  10. Oracle 修改数据库基本参数
  11. vue 项目中使用粘性布局不起作用_做vue项目中遇到的坑总结与学习
  12. 西山居Donya达成战略合作 Simplygon技术优化《剑网3》
  13. java怎么进行浮点数运算_【考试经验】Java中实现浮点数的精确运算
  14. 特斯拉退市,是一个工程师的执拗
  15. 【数据结构】图文讲解神奇的单链表与双链表
  16. IBM人工智能进入法律行业:推世界首位AI律师ROSS
  17. 用python画一个树_如何用python简单画一棵树
  18. adsl双网卡共享上网的设置(win2003)
  19. ssm框架搭建连接mysql_搭建SSM框架(一) - xiaoqi__y的个人空间 - OSCHINA - 中文开源技术交流社区...
  20. VMware解决:未能将管道连接到虚拟机: 所有的管道范例都在使用中。

热门文章

  1. java.io.FileNotFoundException: /sdcard/fav.txt (Permission denied)
  2. 什么是视频价值?如何体现价值?做自媒体有很多人都弄错了
  3. 巴斯卡(Pascal)三角形Java算法
  4. Hadoop安装配置(转自虾皮工作室)
  5. 2021年11月14日
  6. 13.矩阵的快速转置算法
  7. 我的世界最新服务器自动打怪,我的世界服务器自动打怪脚本刀剑乱舞图
  8. Django MVT模型详解
  9. char、char*和char**区别与联系(入门级)
  10. 永磁同步电机力矩控制(三):关于电机位置信号