爬取3w条『各种品牌』笔记本电脑数据,统计分析并进行可视化展示!真好看~...
本文代码讲解已录成视频,欢迎扫码学习!
本文手撕代码过程
01
前言
在上一篇文章【教你用python爬取『京东』商品数据,原来这么简单!】教大家如何学会爬取『京东』商城商品数据。
今天教大家如何爬取『京东』平台里面『各种品牌』笔记本电脑数据约30000条进行统计分析,最后进行可视化展示(各种可视化图表真好看!!)
本文干货内容:
爬取京东商品所有笔记本电脑数据
数据存储到excel
pandas对excel数据进行统计分析
绘制各种可视化图表
02
爬取数据
1.链接分析
之前介绍了爬取其中的一种商品,这里需要爬取『各种品牌』,对应的链接也不一样,需要进行分析。
可以分析链接中,ev参数对应着品牌的名称,因此只需要更改ev参数就可以爬取不同品牌的笔记本数据。
避坑:
注意不要遗漏后面的括号:联想(lenovo),少了后面括号有一些品牌的数据无法爬取(亲测证明)。
此外不同品牌的笔记本商品数据总量(总页数)不一样,因此同样需要对应进行汇总,这里定义了字典去存储1.品牌名称和2.总页数。
brand_dict={'联想(lenovo)':100,'ThinkPad':100,'戴尔(DELL)':100,'惠普(HP)':100,'华为(HUAWEI)':100,'Apple':100,'小米(MI)':47,'宏碁(acer)':43,'荣耀(HONOR)':21,'机械革命(MECHREVO)':31,'微软(Microsoft)':100,'LG':3,'神舟(HASEE)':34,'VAIO':3,'三星(SAMSUNG)':47,
}
2.获取不同品牌笔记本数据
#李运辰 公众号:python爬虫数据分析挖掘
#遍历每一页
def getpage(brand_dict):global countfor k, v in brand_dict.items():page = 1s = 1brand = str(k)try:for i in range(1, int(v) + 1):url = "https://search.jd.com/search?keyword=笔记本&wq=笔记本&ev=exbrand_" + str(brand) + "&page=" + str(page) + "&s=" + str(s) + "&click=1"getlist(url, brand)page = page + 2s = s + 60print("品牌=" + str(k) + ",页数=" + str(v) + ",当前页数=" + str(i))except:pass
这里加入了try-except,防止其中某一页爬取失败,造成程序终止!
3.遍历每一页数据
#李运辰 公众号:python爬虫数据分析挖掘
###获取每一页的商品数据
def getlist(url,brand):global count#url="https://search.jd.com/search?keyword=笔记本&wq=笔记本&ev=exbrand_联想%5E&page=9&s=241&click=1"res = requests.get(url,headers=headers)res.encoding = 'utf-8'text = res.textselector = etree.HTML(text)list = selector.xpath('//*[@id="J_goodsList"]/ul/li')for i in list:title=i.xpath('.//div[@class="p-name p-name-type-2"]/a/em/text()')[0]price = i.xpath('.//div[@class="p-price"]/strong/i/text()')[0]
这里只获取商品标题和商品价格
4.数据存储到excel
定义excel表头
#李运辰 公众号:python爬虫数据分析挖掘
import openpyxl
outwb = openpyxl.Workbook()
outws = outwb.create_sheet(index=0)
outws.cell(row=1, column=1, value="index")
outws.cell(row=1, column=2, value="brand")
outws.cell(row=1, column=3, value="title")
outws.cell(row=1, column=4, value="price")
count = 2
写数据并保存成笔记本电脑-李运辰.xls
outws.cell(row=count, column=1, value=str(count-1))
outws.cell(row=count, column=2, value=str(brand))
outws.cell(row=count, column=3, value=str(title))
outws.cell(row=count, column=4, value=str(price))
outwb.save("笔记本电脑-李运辰.xls") # 保存
这样我们的数据就已经爬取完成。
下面开始对这些数据进行统计分析,最后绘制可视化图。
03
可视化分析
1.展示每个品牌的数据量
pandas读取excel
#李运辰 公众号:python爬虫数据分析挖掘
#读入数据
df_all = pd.read_csv("笔记本电脑-李运辰.csv",engine="python")
df = df_all.copy()
# 重置索引
df = df.reset_index(drop=True)
统计分析
#李运辰 公众号:python爬虫数据分析挖掘
brand_counts = df.groupby('brand')['price'].count().sort_values(ascending=False).reset_index()
brand_counts.columns = ['品牌', '数据量']
name = (brand_counts['品牌']).tolist()
dict_values = (brand_counts['数据量']).tolist()
可视化展示
#李运辰 公众号:python爬虫数据分析挖掘
#链式调用
c = (Bar(init_opts=opts.InitOpts( # 初始配置项theme=ThemeType.MACARONS,animation_opts=opts.AnimationOpts(animation_delay=1000, animation_easing="cubicOut" # 初始动画延迟和缓动效果))).add_xaxis(xaxis_data=name) # x轴.add_yaxis(series_name="展示每个品牌的数据量", yaxis_data=dict_values) # y轴.set_global_opts(title_opts=opts.TitleOpts(title='', subtitle='', # 标题配置和调整位置title_textstyle_opts=opts.TextStyleOpts(font_family='SimHei', font_size=25, font_weight='bold', color='red',), pos_left="90%", pos_top="10",),xaxis_opts=opts.AxisOpts(name='品牌', axislabel_opts=opts.LabelOpts(rotate=45)),# 设置x名称和Label rotate解决标签名字过长使用yaxis_opts=opts.AxisOpts(name='数据量'),).render("展示每个品牌的数据量.html")
)
2.最高价格对比
统计分析
#李运辰 公众号:python爬虫数据分析挖掘
brand_maxprice = df.groupby('brand')['price'].agg(['max'])['max'].sort_values(ascending=False).reset_index()
brand_maxprice.columns = ['品牌', '最高价']
name = (brand_maxprice['品牌']).tolist()
dict_values = (brand_maxprice['最高价']).tolist()
可视化展示
#李运辰 公众号:python爬虫数据分析挖掘
##去掉英文名称
for i in range(0, len(name)):if "(" in name[i]:name[i] = name[i][0:int(name[i].index("("))]# 链式调用
c = (Bar(init_opts=opts.InitOpts( # 初始配置项theme=ThemeType.MACARONS,animation_opts=opts.AnimationOpts(animation_delay=1000, animation_easing="cubicOut" # 初始动画延迟和缓动效果))).add_xaxis(xaxis_data=name) # x轴.add_yaxis(series_name="最高价格对比", yaxis_data=dict_values) # y轴.set_global_opts(title_opts=opts.TitleOpts(title='', subtitle='', # 标题配置和调整位置title_textstyle_opts=opts.TextStyleOpts(font_family='SimHei', font_size=25, font_weight='bold', color='red',), pos_left="90%", pos_top="10",),xaxis_opts=opts.AxisOpts(name='品牌', axislabel_opts=opts.LabelOpts(rotate=45)),# 设置x名称和Label rotate解决标签名字过长使用yaxis_opts=opts.AxisOpts(name='最高价'),).render("最高价格对比.html")
)
3.价格均值
统计分析
#李运辰 公众号:python爬虫数据分析挖掘
brand_meanprice = df.groupby('brand')['price'].agg(['mean'])['mean'].sort_values(ascending=False).reset_index()
brand_meanprice.columns = ['品牌', '价格均值']
name = (brand_meanprice['品牌']).tolist()
dict_values = (brand_meanprice['价格均值']).tolist()##去掉英文名称
for i in range(0, len(name)):if "(" in name[i]:name[i] = name[i][0:int(name[i].index("("))]#价格转为整数
for i in range(0, len(dict_values)):dict_values[i] = int(dict_values[i])
可视化展示
#李运辰 公众号:python爬虫数据分析挖掘
# 链式调用
c = (Bar(init_opts=opts.InitOpts( # 初始配置项theme=ThemeType.MACARONS,animation_opts=opts.AnimationOpts(animation_delay=1000, animation_easing="cubicOut" # 初始动画延迟和缓动效果))).add_xaxis(xaxis_data=name) # x轴.add_yaxis(series_name="价格均值对比", yaxis_data=dict_values) # y轴.set_global_opts(title_opts=opts.TitleOpts(title='', subtitle='', # 标题配置和调整位置title_textstyle_opts=opts.TextStyleOpts(font_family='SimHei', font_size=25, font_weight='bold', color='red',), pos_left="90%", pos_top="10",),xaxis_opts=opts.AxisOpts(name='品牌', axislabel_opts=opts.LabelOpts(rotate=45)),# 设置x名称和Label rotate解决标签名字过长使用yaxis_opts=opts.AxisOpts(name='价格均值'),).render("价格均值对比.html"))
4.各大品牌标题词云
提取文本
#李运辰 公众号:python爬虫数据分析挖掘
brand_title = df.groupby('brand')['title']
brand_title = list(brand_title)
for z in range(0,len(brand_title)):brandname = brand_title[z][0]if "(" in brandname:brandname = brandname[0:int(brandname.index("("))]brandname = str(brandname).encode("utf-8").decode('utf8')print(brandname)text = "".join((brand_title[z][1]).tolist())text = text.replace(brand_title[z][0],"").replace(brandname,"").replace("\n\r","").replace("\t","").replace("\n","").replace("\r","").replace("【","").replace("】","").replace(" ","")#print(text)with open("text/"+str(brandname)+".txt","a+") as f:f.write(text)
这里将不同品牌的标题文本写入到txt
可视化展示
#李运辰 公众号:python爬虫数据分析挖掘
def an4_pic():###词云图标fa_list = ['fas fa-play', 'fas fa-audio-description', 'fas fa-circle', 'fas fa-eject', 'fas fa-stop','fas fa-video', 'fas fa-volume-off', 'fas fa-truck', 'fas fa-apple-alt', 'fas fa-mountain','fas fa-tree', 'fas fa-database', 'fas fa-wifi', 'fas fa-mobile', 'fas fa-plug']z=0##开始绘图for filename in os.listdir("text"):print(filename)with open("text/"+filename,"r") as f:text = (f.readlines())[0]with open("stopword.txt", "r", encoding='UTF-8') as f:stopword = f.readlines()for i in stopword:print(i)i = str(i).replace("\r\n", "").replace("\r", "").replace("\n", "")text = text.replace(i, "")word_list = jieba.cut(text)result = " ".join(word_list) # 分词用 隔开# 制作中文云词icon_name = str(fa_list[z])gen_stylecloud(text=result, icon_name=icon_name, font_path='simsun.ttc',output_name=str(filename.replace(".txt",""))+"词云图.png") # 必须加中文字体,否则格式错误z =z+1
1.Apple词云图
2.LG词云图
3.Thinkpad词云图
4.VAIO词云图
5.戴尔词云图
6.宏碁词云图
7.华为词云图
8.惠普词云图
9.机械革命词云图
10.联想词云图
11.荣耀词云图
12.三星词云图
13.神州笔记本
14.微软词云图
15.小米词云图
04
总结
1.讲解了如何用python爬取『各种品牌』笔记本电脑数据。
2.利用pandas对excel数据进行统计分析。
3.对统计数据进行动图展示,以及绘制各种精美词云图。
4.如果大家本文有什么地方不明白的可以在下方留言或者下方扫码观看本文代码讲解(手撕过程)
如果大家对本文代码源码感兴趣,扫码关注『Python爬虫数据分析挖掘』后台回复:笔记本分析 ,获取完整代码!
本文代码讲解已录成视频,欢迎扫码学习!
本文手撕代码过程
如果大家想加群学习,后台点击:加群交流
------------- 推荐阅读 -------------
往期精彩
1.教你用python爬取『京东』商品数据,原来这么简单!
2.教你用python爬虫下载1w+『ppt模板』,再也不用付费去购买啦!
3.python爬取7w+『赘婿』弹幕,发现弹幕比剧还精彩!
爬虫入门篇
1.今天只分享python、爬虫入门级学习资料
爬虫框架篇
1.以『B站』为实战案例!手把手教你掌握爬虫必备框架『Scrapy』
2.爬取1907条『课程学习』数据,分析哪类学习资源最受大学生青睐1
爬虫反爬篇
1.爬虫遇到反爬机制怎么办? 看看我是如何解决的!
爬取3w条『各种品牌』笔记本电脑数据,统计分析并进行可视化展示!真好看~...相关推荐
- 实战▍Python爬取3w条游戏评分数据,看看哪款最热门?
图| 战争前线游戏原画 本文作者| 量化小白H 本文为投稿,36大数据已获发布授权 36大数据推荐 实战项目 本文爬取了豆瓣游戏网站上所有可见的游戏评分数据进行分析,全文包括以下几个部分: 数据获 ...
- Python爬取44130条用户观影数据,分析挖掘用户与电影之间的隐藏信息!
1.前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以点击下方链接自行获取 Python免费学习 ...
- 手把手教你爬取PC端『某酷视频』个人历史播放数据,并可视化展示
大家好,我是阿辰,今天手把手教你爬取PC端『某酷视频』个人历史播放数据,并可视化展示 上次有粉丝说,那个是ios手机,安卓手机现在需要root权限才可以安装证书,那么今天就不以手机为例,以电脑PC端为 ...
- 爬虫爬取京东商品详细数据 (品牌、售价、各类评论量(精确数量)、热评词及数量等)json解析部分数据
文章目录 前言 一.数据保存格式设置及数据库准备(CentOS云mysql数据库) 1.分析数据需求(单一商品为例) 2.数据库保存格式 3.用到的数据库操作及指令 二.网页分析 1.分析网页源码,确 ...
- Python 爬取 201865 条《隐秘的角落》弹幕,发现看剧不如爬山?
作者 | 朱小五 责编 | 屠敏 封图 | CSDN 付费下载自东方 IC 最近又火了一部国产剧:<隐秘的角落>. 如果你没看过,那可能会对朋友圈里大家说的"一起去爬山" ...
- Python 爬取 201865 条《隐秘的角落》弹幕数据,发现看剧不如爬山?
Python 爬取 201865 条<隐秘的角落>弹幕数据,发现看剧不如爬山? 本文不涉及剧透!请放心食用 最近又火了一步国产剧:<隐秘的角落> 如果你没看过,那可能会对朋友圈 ...
- python爬虫(二十四)爬取汽车之家某品牌图片
爬取汽车之家某品牌图片 需求 爬取汽车之家某品牌的汽车图片 目标url https://car.autohome.com.cn/photolist/series/52880/6957393.html# ...
- 使用urllib 爬取万条伤感网易云热评
使用urllib 爬取万条伤感网易云热评 import urllib.request import re import ssl import json #抓取一页 def 网易云热评(url):#创建 ...
- python爬取9000条京东内衣销售数据,最最最最基础的语言和语法;并利用这些数据,基于Aprior算法分析“是否罩杯大的人倾向于买贵一些的bra”
47[TOC](爬取9000条京东内衣销售数据,最最最最基础的语言和语法,并利用这些数据,基于Aprior算法分析"是否罩杯大的人倾向于买贵一些的bra") 本人刚接触python ...
最新文章
- Linux学习(十三)---搭建JavaEE环境
- live555从RTSP服务器读取数据到使用接收到的数据流程分析
- openstack学习笔记三 创建第一个实例
- Boost的自动链接功能
- 循环卷积和周期卷积的关系_PSConv:多位一体、即插即用卷积单元
- 2022年跨境电商新玩法:Tik Tok私域流量沉淀+电商平台流量承接
- 前端学习(3221):类式组件中的props
- 用多媒体库 Bass.dll 播放 mp3 [15] - 设置与获取播放速度
- 高性能的MySQL(5)索引策略一聚簇索引
- 条件变量的陷阱,惊群效应(转载)
- FTT字体绘制,2D阶段
- LC-410 分割数组的最大和
- Millumin for Mac视频实时编辑软件
- 自动化生产线认知_什么是认知自动化?
- html如何调图片透明度,改变图片的透明度.html
- 互联网日报 | 前11月全国网购超10万亿元;B站8月月活首次突破2亿;华为Mate40标准版开启预售...
- 二年级语文备课组集体备课观摩活动
- ajax 发http请求吗,使用 Ajax 发送 http 请求 (getpost 请求)
- 如何把路由器设置为交换机模式来使用
- matlab脚本文件求梯度,转:用MATLAB求梯度的二个实例