鱼C论坛

 找回密码
 立即注册
查看: 5665|回复: 22

[作品展示] 爬取论坛 ---> 最佳答案总排行

[复制链接]
发表于 2019-10-6 15:58:51 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 zltzlt 于 2019-10-6 17:35 编辑

Python 爬虫 | 爬取论坛最佳答案总排行

1.png


项目需求:

  • 爬取论坛最佳答案总排行
  • 将爬取的数据保存成一张柱状图

搜狗截图20191006150256.png

开发准备:

  • 第三方模块:requests、pyecharts
  • 内置模块:re


详细步骤:

1. 定义 GetPage() 函数,用于爬取 此网页。(记得设置 headers)

搜狗截图20191006151012.png

通过观察,我们可以发现论坛网页编码是 GBK:

搜狗截图20191006151247.png

所以将得到的二进制数据用 GBK 解码:

搜狗截图20191006151628.png

2. 定义 Find() 函数,从网页代码中找出可以提取的数据(用户名,累计最佳答案个数)。

要提取 搜狗截图20191006152141.png 这部分,首先要在网页找到 搜狗截图20191006152250.png 。由于 <h2>最佳总排行</h2> 前面的部分对我们的查找没有帮助,所以大可将它去掉:

搜狗截图20191006152516.png

由于我们需要获取用户名和累计最佳答案个数,先观察一下规律。

搜狗截图20191006153316.png

可以看到,用户名是包含在 title 中的,个数跟在 “累计:” 后面。根据这一特点,写出正则表达式代码:

搜狗截图20191006153515.png

这时 res 是一个列表,每个元素是用户信息,所以来个 for 循环迭代(我的方法真笨):

搜狗截图20191006153905.png

最后将数据返回。

搜狗截图20191006153936.png

3. 定义 Charts 函数,将数据渲染成柱状图。

搜狗截图20191006154200.png

先创建一个 Bar(pyecharts.charts.Bar)的实例,设置 x 轴和 y 轴数据(bar.add_xaxis()、bar.add_yaxis()),最后渲染(bar.render())成网页文件 '鱼 C 论坛最佳答案排行榜.html'。

4. 定义主程序函数 Main()。

搜狗截图20191006154933.png

到这里,整个程序就大功告成啦看一下生成的柱状图文件:

g.gif

可以看到,塔利班大佬高居首位,1726 个最佳答案而我居第八(嘿嘿

有兴趣的同学们还可以去了解 pyecharts 的其他功能(比如饼图、折线图、散点图等等),绝对会令你惊讶

程序源代码:

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


更新日志:

2019-10-06 17:18 更新

  • 不仅可以生成柱状图,还可以生成词云图、折线图。


词云图:

搜狗截图20191006173351.png

折线图:

搜狗截图20191006173427.png

源代码:

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

评分

参与人数 2荣誉 +12 鱼币 +12 贡献 +9 收起 理由
不二如是 + 6 + 6 + 3 鱼C有你更精彩^_^
冬雪雪冬 + 6 + 6 + 6 鱼C有你更精彩^_^

查看全部评分

本帖被以下淘专辑推荐:

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

使用道具 举报

 楼主| 发表于 2019-10-6 15:59:15 | 显示全部楼层
本帖最后由 zltzlt 于 2019-10-6 17:36 编辑

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

使用道具 举报

发表于 2019-10-6 16:18:43 | 显示全部楼层

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

使用道具 举报

发表于 2019-10-6 17:09:05 | 显示全部楼层
学习大神作品。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-7 14:32:55 | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-10-7 18:16:18 | 显示全部楼层

不鼓励爬本论坛……

服务器君在厕所阴暗处哭泣……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-7 18:17:09 | 显示全部楼层
小甲鱼 发表于 2019-10-7 18:16
不鼓励爬本论坛……

服务器君在厕所阴暗处哭泣……

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

使用道具 举报

发表于 2019-10-7 18:20:51 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-12 15:49:31 | 显示全部楼层
小甲鱼 发表于 2019-10-7 18:16
不鼓励爬本论坛……

服务器君在厕所阴暗处哭泣……

看到帖子有一个想法冒出来了,采集下数据,看看渔友发帖时间,回帖时间,做个数据汇总
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-20 14:50:20 | 显示全部楼层

这个不应该用折线图的
@zltzlt
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-20 14:51:54 | 显示全部楼层
_2_ 发表于 2019-10-20 14:50
这个不应该用折线图的
@zltzlt

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

使用道具 举报

发表于 2019-10-20 15:00:48 | 显示全部楼层

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

使用道具 举报

 楼主| 发表于 2019-10-20 15:06:24 | 显示全部楼层

锻炼一下用 Python 画折线图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-20 15:08:02 | 显示全部楼层
zltzlt 发表于 2019-10-20 15:06
锻炼一下用 Python 画折线图

这又是一个新的小技巧,来介绍一下它的API吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-20 15:10:19 | 显示全部楼层
_2_ 发表于 2019-10-20 15:08
这又是一个新的小技巧,来介绍一下它的API吧

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

使用道具 举报

发表于 2019-10-20 19:07:03 | 显示全部楼层
谢谢楼主分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-28 10:49:21 | 显示全部楼层
顶楼主啦..希望楼主多发精品好帖啦.....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-2 20:16:31 | 显示全部楼层
这个牛逼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2021-8-11 22:14:19 | 显示全部楼层
可以的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-24 05:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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