爬取JD商品评论并数据可视化
本文参考了知乎文章 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商品评论并数据可视化相关推荐
- scrapy爬取京东商品评论并保存至Mysql数据库中
scrapy爬取京东商品评论并保存至Mysql数据库 一.总体概述 二.实践过程 2.1网页解析 2.2使用单线程爬取代码如下: 2.3使用scrapy爬取数据 2.4绘制词云图结果: 三.总结 一. ...
- python制作爬虫爬取京东商品评论教程
python制作爬虫爬取京东商品评论教程 作者:蓝鲸 类型:转载 本文是继前2篇Python爬虫系列文章的后续篇,给大家介绍的是如何使用Python爬取京东商品评论信息的方法,并根据数据绘制成各种统计 ...
- Python爬取京东商品评论
京东商城的页面不是静态页面,其评论信息存放于json文件中,由ajax控制,所以我们在浏览器上看到的网页源代码和用Python爬下来的是不一样的,所以我们真正要爬取的是评论数据所存放的json文件. ...
- Python爬取京东商品评论和图片下载
Python爬取京东商品评论和图片下载 代码仅供学习使用,切勿扩散并且频繁爬取网站 贴上代码和注释,方便自己下次看 import requests import time import json im ...
- 商品评论html,京东商品评论太多(带你一键爬取京东商品评论)
京东商品评论太多(带你一键爬取京东商品评论) 一.项目说明 1.项目背景 一天,一朋友扔给我一个链接https://item.jd.com/100000499657.html,让我看看这个歌商品的所有 ...
- 用python爬取天猫商品评论并分析(2)
用python爬取天猫商品评论并分析(2) 之前介绍过天猫数据的爬取和数据初步处理,今天介绍下 将采集的评论进行文本分析!下面是总流程: 0. 主要流程 0. 数据采集 这一步参考网址:https:/ ...
- 利用在京东上爬取的商品评论做分析
利用在京东上爬取的商品评论做分析 1.读入数据 Python中读入数据,查看数据 import pandas as pd import re import os os.chdir("C:/U ...
- Python动态爬虫爬取京东商品评论
Python 动态爬虫爬取京东商品评论 1. 概述 京东商城是Python爬虫初学者试手的经典平台,反爬虫程度较低,但评论采取了动态加载的方式,爬取京东商品评论是学习动态爬虫的一个极佳方法. 动态爬虫 ...
- Python 爬取京东商品评论 + 词云展示
利用python爬虫爬取京东商品评论数据,并绘制词云展示. 原文链接:https://yetingyun.blog.csdn.net/article/details/107943979 创作不易,未经 ...
最新文章
- 神经网络设计与分析之如何知道权重的利用率
- C语言二级指针与典型应用(1)
- 金蝶kis云+sqlserver报表分析
- 详解CSS display:inline-block的应用(转)
- 《深入理解Android 5 源代码》——第1章,第1.2节剖析Android系统架构
- linux 多线程(一)条件变量
- openwrt运行linux软件,使用OpenWrt开发嵌入式Linux(二):先让系统跑起来(使用initramfs)...
- 蚂蚁课堂:lombok
- 关于NRF24L01模块使用的部分个人总结
- 3d模型转obj格式
- 信息安全技术 实验3 木马及远程控制技术
- 抖音小店怎么去添加淘宝链接?哪种推广适合淘客丨国仁网络资讯
- web前端面试(1) 前端缓存怎么做?
- 宣传6个9的可靠性就真的可靠吗
- vue-miniQQ——基于Vue2实现的仿手机QQ单页面应用(接入了聊天机器人,能够进行正常对话)...
- Windows10 LTSB/LTSC 企业版安装应用商店
- iPhone各种机型尺寸、屏幕分辨率
- 编写一个学生类student,包含的属性有学号,姓名,年龄
- 统计平均分,最高分及得最高分人数
- java.lang.IllegalArgumentException: MALFORMED