本文参考了知乎文章 https://zhuanlan.zhihu.com/p/60444767

思路

阅读文章后发现原来还可以通过抓取json的方式爬评论,不需要再去一个个数据去找页面标签等等复杂的操作,直接请求然后解析返回的json数据(超级整齐)。

requirements

requests
pyecharts
pandas
jieba
wordcloud
matplotlib

爬取评论

先贴代码

# -*- coding:utf-8 -*-import requestsurl = 'https://sclub.jd.com/comment/productPageComments.action?productId=100004325476&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1'# 请求头
headers = {'Connection': 'Keep-Alive','Accept': 'text/html, application/xhtml+xml, */*','Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) ''Chrome/74.0.3729.169 Safari/537.36','Referer': 'https://item.jd.com/100004325476.html','Host': 'sclub.jd.com'
}def get_comment(url):# 请求req = requests.get(url, headers=headers)# 数据处理res = req.json()  # 转换成python对象comments = res['comments']total = []for comment in comments:data = {'id': comment['id'],'content': comment['content'],'score': comment['score'],'userLevelName': comment['userLevelName'],'userClientShow': comment['userClientShow'],'mobileVersion': comment['mobileVersion']}total.append(data)return totalif __name__ == '__main__':res = get_comment(url)print(res)

这里需要特别注意的是请求头的处理。如果用一般的请求头,如'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36' 会发现返回一些奇怪的数据。打开开发者工具,具体看里面的请求头(不详细讲,可以百度),然后copy到代码里。

爬取并存储

还是先贴代码

# -*- coding:utf-8 -*-import get_page_comment as cm
import store_comment as st
import time
import random# 构造url
urls = []
for score in range(1, 4, 1):for page in range(0, 10, 1):ori = "https://sclub.jd.com/comment/productPageComments.action?productId=100004325476&score=%(score)d&sortType=5&page=%(page)d&pageSize=10&isShadowSku=0&fold=1" % {'score': score, 'page': page}urls.append(ori)
# print(urls)# 获取评论
res = []
for url in urls:s = cm.get_comment(url)res += sprint(s)time.sleep(random.uniform(1, 3))# print(res)# 存储
st.store_data(res)

这里url的构造需要用到两个变量,灵机一动想到用格式化字符串的方式来构造,代码更加pythonic了!
还有需要注意的就是要加入随机的sleep防止被反爬。
复习一下如果使用selenium是不需要做反爬的超级方便的呢!

jieba分词和词云

然后就是用jieba分词做词云了
贴下代码

# -*- coding:utf-8 -*-import pandas as pd
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt# 从xls读入数据
data = pd.read_excel('JD.xls')
comments = data['content']text = ''
for comment in comments:text += ' '.join(jieba.cut(comment))wordcloud = WordCloud(font_path="C:/Windows/Fonts/msyh.ttc",background_color="white",width=1000,height=880,stopwords={'耳机', '京东', '非常'}
).generate(text)
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()

具体的用法在我的另一篇博客里有详细讲 https://blog.csdn.net/weixin_43409309/article/details/88649728

得到的词云:

pyecharts得到图表

同样先贴一下代码

# -*- coding:utf-8 -*-import pandas as pd
from pyecharts.charts import Bar# 从xls读入数据
data = pd.read_excel('JD.xls')userLevelName = data['userLevelName']
count = userLevelName.value_counts() # 对各项计数
num = count.tolist() # 转换成python对象bar = (Bar().add_xaxis(['PLUS会员', '金牌会员', '银牌会员', '钻石会员', '铜牌会员', '注册会员']).add_yaxis('数量',yaxis_data=num))
bar.render('a.html')

过程很简单,用pandas读入数据,然后用pandas对某一字段进行统计,转换成list,然后用柱状图表示。

得到的结果:

总结

整个过程总的来说不是太难(因为有之前知识的铺垫),主要是直接抓取返回的json这一个比较有意思。json的数据十分整齐,既容易获得又容易处理,尤其对于这种动态的网站,不失为一个好思路。

爬取JD商品评论并数据可视化相关推荐

  1. scrapy爬取京东商品评论并保存至Mysql数据库中

    scrapy爬取京东商品评论并保存至Mysql数据库 一.总体概述 二.实践过程 2.1网页解析 2.2使用单线程爬取代码如下: 2.3使用scrapy爬取数据 2.4绘制词云图结果: 三.总结 一. ...

  2. python制作爬虫爬取京东商品评论教程

    python制作爬虫爬取京东商品评论教程 作者:蓝鲸 类型:转载 本文是继前2篇Python爬虫系列文章的后续篇,给大家介绍的是如何使用Python爬取京东商品评论信息的方法,并根据数据绘制成各种统计 ...

  3. Python爬取京东商品评论

    京东商城的页面不是静态页面,其评论信息存放于json文件中,由ajax控制,所以我们在浏览器上看到的网页源代码和用Python爬下来的是不一样的,所以我们真正要爬取的是评论数据所存放的json文件. ...

  4. Python爬取京东商品评论和图片下载

    Python爬取京东商品评论和图片下载 代码仅供学习使用,切勿扩散并且频繁爬取网站 贴上代码和注释,方便自己下次看 import requests import time import json im ...

  5. 商品评论html,京东商品评论太多(带你一键爬取京东商品评论)

    京东商品评论太多(带你一键爬取京东商品评论) 一.项目说明 1.项目背景 一天,一朋友扔给我一个链接https://item.jd.com/100000499657.html,让我看看这个歌商品的所有 ...

  6. 用python爬取天猫商品评论并分析(2)

    用python爬取天猫商品评论并分析(2) 之前介绍过天猫数据的爬取和数据初步处理,今天介绍下 将采集的评论进行文本分析!下面是总流程: 0. 主要流程 0. 数据采集 这一步参考网址:https:/ ...

  7. 利用在京东上爬取的商品评论做分析

    利用在京东上爬取的商品评论做分析 1.读入数据 Python中读入数据,查看数据 import pandas as pd import re import os os.chdir("C:/U ...

  8. Python动态爬虫爬取京东商品评论

    Python 动态爬虫爬取京东商品评论 1. 概述 京东商城是Python爬虫初学者试手的经典平台,反爬虫程度较低,但评论采取了动态加载的方式,爬取京东商品评论是学习动态爬虫的一个极佳方法. 动态爬虫 ...

  9. Python 爬取京东商品评论 + 词云展示

    利用python爬虫爬取京东商品评论数据,并绘制词云展示. 原文链接:https://yetingyun.blog.csdn.net/article/details/107943979 创作不易,未经 ...

最新文章

  1. 神经网络设计与分析之如何知道权重的利用率
  2. C语言二级指针与典型应用(1)
  3. 金蝶kis云+sqlserver报表分析
  4. 详解CSS display:inline-block的应用(转)
  5. 《深入理解Android 5 源代码》——第1章,第1.2节剖析Android系统架构
  6. linux 多线程(一)条件变量
  7. openwrt运行linux软件,使用OpenWrt开发嵌入式Linux(二):先让系统跑起来(使用initramfs)...
  8. 蚂蚁课堂:lombok
  9. 关于NRF24L01模块使用的部分个人总结
  10. 3d模型转obj格式
  11. 信息安全技术 实验3 木马及远程控制技术
  12. 抖音小店怎么去添加淘宝链接?哪种推广适合淘客丨国仁网络资讯
  13. web前端面试(1) 前端缓存怎么做?
  14. 宣传6个9的可靠性就真的可靠吗
  15. vue-miniQQ——基于Vue2实现的仿手机QQ单页面应用(接入了聊天机器人,能够进行正常对话)...
  16. Windows10 LTSB/LTSC 企业版安装应用商店
  17. iPhone各种机型尺寸、屏幕分辨率
  18. 编写一个学生类student,包含的属性有学号,姓名,年龄
  19. 统计平均分,最高分及得最高分人数
  20. java.lang.IllegalArgumentException: MALFORMED

热门文章

  1. C++小技巧之反转字符串
  2. SQL Serve Intersect(交集)
  3. 鸿蒙系统适配荣耀机型,荣耀鸿蒙系统支持的手机型号机型名单 曝6月开始适配...
  4. mysql8查看用户密码_mysql8用户管理
  5. 哔哩哔哩 机器人历险记_里约大冒险2(2014)
  6. 智慧城市中的数字孪生 附下载
  7. 台式机接入头戴式耳麦后线材螺旋自纠缠成麻花问题
  8. Object类下面的一些方法详解
  9. 【vue2】vue全家桶介绍,学习vue必备
  10. 浪涌保护器的前端防线:SCB后备保护器