zltzlt 发表于 2019-10-6 15:58:51

爬取论坛 ---> 最佳答案总排行

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

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



项目需求:


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



开发准备:


[*]第三方模块:requests、pyecharts
[*]内置模块:re


详细步骤:

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



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



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



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

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



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



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



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



最后将数据返回。



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



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

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



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



可以看到,塔利班大佬高居首位,1726 个最佳答案{:10_275:}而我居第八(嘿嘿{:10_279:})

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

程序源代码:

**** Hidden Message *****

更新日志:

2019-10-06 17:18 更新


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


词云图:



折线图:



源代码:

**** Hidden Message *****

zltzlt 发表于 2019-10-6 15:59:15

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

@小甲鱼 申精{:10_256:}

一个账号 发表于 2019-10-6 16:18:43

zltzlt 发表于 2019-10-6 15:59
@小甲鱼申精

好吧......信你{:10_333:}

kaohsing 发表于 2019-10-6 17:09:05

学习大神作品。

ykn大神6 发表于 2019-10-7 14:32:55

看看

小甲鱼 发表于 2019-10-7 18:16:18

zltzlt 发表于 2019-10-6 15:59
@小甲鱼 申精

不鼓励爬本论坛……

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

zltzlt 发表于 2019-10-7 18:17:09

小甲鱼 发表于 2019-10-7 18:16
不鼓励爬本论坛……

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

{:10_245:}

小甲鱼 发表于 2019-10-7 18:20:51

zltzlt 发表于 2019-10-7 18:17


{:5_109:}

Stubborn 发表于 2019-10-12 15:49:31

小甲鱼 发表于 2019-10-7 18:16
不鼓励爬本论坛……

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

看到帖子有一个想法冒出来了,{:10_334:}采集下数据,看看渔友发帖时间,回帖时间,做个数据汇总{:10_256:}{:10_254:}

_2_ 发表于 2019-10-20 14:50:20

小甲鱼 发表于 2019-10-7 18:20


这个不应该用折线图的{:10_256:}
@zltzlt

zltzlt 发表于 2019-10-20 14:51:54

_2_ 发表于 2019-10-20 14:50
这个不应该用折线图的
@zltzlt

只是锻炼一下{:10_256:}

_2_ 发表于 2019-10-20 15:00:48

zltzlt 发表于 2019-10-20 14:51
只是锻炼一下

小学没学吗?

zltzlt 发表于 2019-10-20 15:06:24

_2_ 发表于 2019-10-20 15:00
小学没学吗?

锻炼一下用 Python 画折线图

_2_ 发表于 2019-10-20 15:08:02

zltzlt 发表于 2019-10-20 15:06
锻炼一下用 Python 画折线图

这又是一个新的小技巧,来介绍一下它的API吧

zltzlt 发表于 2019-10-20 15:10:19

_2_ 发表于 2019-10-20 15:08
这又是一个新的小技巧,来介绍一下它的API吧

Chris2019 发表于 2019-10-20 19:07:03

谢谢楼主分享

回忆那么清晰 发表于 2019-10-28 10:49:21

顶楼主啦..希望楼主多发精品好帖啦.....

dksimth 发表于 2020-4-2 20:16:31

这个牛逼

青出于蓝 发表于 2021-8-4 08:04:20

学习

Rosy7673 发表于 2021-8-11 22:14:19

可以的
页: [1] 2
查看完整版本: 爬取论坛 ---> 最佳答案总排行