鱼C论坛

 找回密码
 立即注册
查看: 21577|回复: 174

[作品展示] 【Tkinter*】多线程爬取京东商品,并做可视化处理

  [复制链接]
发表于 2021-4-5 20:01:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 小伤口 于 2021-4-5 20:01 编辑

京东帮帮怪


程序简介

1 爬取京东评论,绘制成词云

2 爬取最近销量(评论)并用 matplotlib 绘制(京东评论数量即销量)

3 爬取商品信息加用户晒出的商品图片

4 将爬取的信息放在 Tkinter (也要用多线程,防止界面无响应)做的界面上,

以此帮助用户更直观的分析商品 。


界面

QQ截图20210405194739.png
QQ截图20210405162744.png

使用教程

注:由于打包 exe 总是失败,所以这个程序并没有 exe 文件

0 安装相关模块(这里统一用 pip 安装):

requests 模块:用于爬取商品评论,照片,信息等
  1. pip install requests
复制代码


BeautifulSoup 模块:用于提取数据
  1. pip install bs4
复制代码


matplotlib 模块:用于绘制图表
  1. pip install matplotlib
复制代码


wordcloud 模块:用于绘制词云
  1. pip install wordcloud
复制代码


1 打开程序:

下载
京东帮帮.rar


这个压缩文件 。点击鼠标右键,选择解压文件 。然后解压到你想要解压的位置

完成之后,打开
京东帮帮怪
这个文件 。

QQ截图20210405170651.png

用鼠标双击上图所示的文件


2 运行程序:

找到你想要查询的商品,复制下图箭头指的网络链接


QQ截图20210405174805.png


ctrl + v 将链接粘贴到下图所示位置,点击开始搜索


QQ截图20210405175750.png


等待加载.....


QQ截图20210405181450.png

当出现如下页面时运行成功(一定要刷新页面哦~)


QQ截图20210405182745.png


2 程序布局:


QQ截图20210405183350.png


点击程序右上角的
换张图片

可以不断查看各种用户发的图片



点击查看图片可以更清晰的观看图片


QQ截图20210405184317.png

使用说明:

QQ截图20210405185052.png

原理讲解

网上爬取京东评论的方法,发现爬取的大半都是好评论,并不能起到太大分析的作用
所以经过筛查发现
productPage...

这个 js 文件里面的网址通过修改相应的参数可以爬取好评,中评,差评和最新评论数等 。
  1. https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=1914356&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1
复制代码

由于单线程爬取过慢,不能让用户等太久,况且很容易被封 IP 所以就用多线程实现
导入
  1. import queue
  2. import threading
复制代码

创建多线程(爬取时间的就不放了哈~)

  1. # 创建多线程
  2. class MyThread(threading.Thread):
  3.     def __init__(self, q):
  4.         threading.Thread.__init__(self)
  5.         self.q = q

  6.     # 调用get_index()
  7.     def run(self) -> None:
  8.         self.get_index()

  9.     def get_index(self):

  10.         url = self.q.get()

  11.         # 加请求头
  12.         headers = {
  13.             "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"}
  14.         res = requests.get(url, headers=headers)

  15.         jd = json.loads(res.text.lstrip("jQuery593159(").rstrip(");"))

  16.         with open("data.txt", "a", encoding="utf-8") as file:
  17.             for i in jd['comments']:
  18.                 file.write(i['content'] + '\n')

  19.             try:
  20.                 for each in i['images']:
  21.                     photo = each['imgUrl'].split('//')
  22.                     photo = photo[-1]
  23.                     photo = 'https://' + photo
  24.                     print(photo)
  25.                     zhao_pian.append(photo)
  26.             except:
  27.                 pass
复制代码

爬取评论我用了 5 个线程
所以用
  1. for i in range(5):
  2.     locals()['MyThread_' + str(i)] = MyThread
复制代码

创建了 5 个线程省去一些重复代码 。
虽然用了多线程但还是不能在短时间内爬取所有评论 。由于京东评论数即销量,
所以爬取最新评论的时间,按月来作为 x 轴的单位,将同一个月评论的时间相加作为每个
月的销量即 y 轴
代码实现:

  1. #将时间提取出来,并进行排序计数
  2.     with open("data2.txt") as file:
  3.         for line in file.readlines():
  4.             dict_data.append(int(line))
  5.     dict_data.sort()
  6.     dic = collections.Counter(dict_data)
  7.     for i in dic:
  8.         dict_data2.append(str(i))
  9.         dict_data3.append(dic[i])
复制代码

绘制折线图
  1. x = np.array(dict_data2)
  2.     y = np.array(dict_data3)
  3.     fig=plt.figure(figsize=(25, 10))
  4.     fig.patch.set_facecolor('Turquoise')
  5.     ax = fig.add_subplot(111)
  6.     ax.patch.set_facecolor('DeepSkyBlue')
  7.     plt.plot(x, y, 'r')  # 折线 1 x 2 y 3 color
  8.     plt.plot(x, y, 'red', lw=2)  # 4 line w
  9.     plt.scatter(x, y, color='red', marker='o')
  10.     font = FontProperties(fname="mnjzbh.ttf")
  11.     plt.title("销售趋势(按时间顺序)", fontsize=24,fontproperties=font)
  12.     plt.xlabel("时间(年,月)", fontsize=14,fontproperties=font)
  13.     plt.ylabel("销售数量(件)", fontsize=14,fontproperties=font)
  14.     plt.savefig('Figure_1.png', bbox_inches='tight')
  15.     plt.show()[/b]
复制代码

完整的爬虫代码(可以复制直接使用哦~)
游客,如果您要查看本帖隐藏内容请回复

源码:
游客,如果您要查看本帖隐藏内容请回复

宣传
下方二维码是我的微信公众号(懂的都懂)
author.png

写文章不易,求评分~,求评分~,求评分~

给各位看官大佬磕头了

评分

参与人数 21荣誉 +103 鱼币 +103 贡献 +58 收起 理由
Twilight6 + 6 + 6 + 6 厉害~!
liuhongrun2022 + 5 + 5 + 3
文静 + 5 + 5 + 3 卧槽大佬!!牛逼plas
隔壁繁星吖 + 5 + 5 + 3 鼓励一波~
划句顾 + 5 + 5 + 3 芜湖
寒武三叶虫 + 5 + 5 + 3 鱼C有你更精彩^_^
八戒253 + 3 + 3 鱼C有你更精彩^_^
hef97 + 5 + 5 + 3
糖甜弯了嘴 + 5 + 5 + 3 ~~~~
小白Python + 3

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-6 00:46:36 | 显示全部楼层

求三连~
(主要是挂件要到期了,想混点积分 。)

评分

参与人数 2荣誉 +11 鱼币 +11 贡献 +9 收起 理由
Twilight6 + 6 + 6 + 6 鱼C有你更精彩^_^
昨非 + 5 + 5 + 3 这不鼓励一波

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-4-5 20:04:43 | 显示全部楼层
芜湖~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-4-5 20:15:38 | 显示全部楼层

谢谢大佬的每次支持
让俺才一直有动力
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-5 20:16:39 | 显示全部楼层

回帖奖励 +2 鱼币

小伤口 发表于 2021-4-5 20:15
谢谢大佬的每次支持
让俺才一直有动力

我不是大佬,这玩意我写起来怕是费劲多了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-5 20:18:40 | 显示全部楼层
小伤口 发表于 2021-4-5 20:15
谢谢大佬的每次支持
让俺才一直有动力

真的只是比你能水罢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

 楼主| 发表于 2021-4-5 20:22:50 | 显示全部楼层
昨非 发表于 2021-4-5 20:18
真的只是比你能水罢了

每个月帮好多鱼友解决问题,还会多种语言,单片机。我还早呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-5 20:31:01 | 显示全部楼层
小伤口 发表于 2021-4-5 20:22
每个月帮好多鱼友解决问题,还会多种语言,单片机。我还早呢

我会个屁啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-5 21:07:12 From FishC Mobile | 显示全部楼层
大...大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-4-5 21:09:42 | 显示全部楼层
小伤口厉害了~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-5 21:37:32 | 显示全部楼层
优秀!点赞先
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-5 21:46:13 | 显示全部楼层

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-5 22:00:18 | 显示全部楼层

回帖奖励 +2 鱼币

膜拜大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-5 22:43:21 | 显示全部楼层
厉害厉害 ,能秒杀东西吗?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-5 22:47:42 | 显示全部楼层
old_叶 发表于 2021-4-5 22:43
厉害厉害 ,能秒杀东西吗?

不行
秒杀的话selenium应该挺容易实现
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-5 22:48:52 | 显示全部楼层

真...过奖了
谢谢大佬支持
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-5 22:49:52 | 显示全部楼层

小伤口太疼了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-6 03:34:43 | 显示全部楼层

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-6 03:36:40 | 显示全部楼层

笔趣阁那个进度咋样啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-6 08:20:39 | 显示全部楼层
厉害,厉害!
像大佬学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 13:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表