Python3.5爬虫统计AcFun所有视频,并按各个类别进行Top100排序展示

前(b)言(b):

  前段时间对Python产生了浓厚的兴趣,所以决定入门学习了1个多月,后来某时我需要对tomcat做一个压力测试,于是我想到了用Python写一个压力测试的脚本吧!最后捣鼓出了一个脚本,成功把自己的tomcat堵死了,其实堵死的不是tomcat,而是我的mysql连接池,灵光一闪既然能把本地的mysql堵死,那么线上的网站会怎么样?最后结果不出所料。。咳咳 好像跑题了,今天我要说的是爬虫额额,这个想法来自我在知乎看到的一个回答,有人对bilibili网站视频做了一个排名统计,好像很腻害,很好玩的样子,哈哈哈,于是我也想玩一下,就把目标定在了AcFun。

 

正文:

  先说明一下,我这个爬虫脚本没有使用到什么框架,唯一特别一点的就是 安装了 pymysql 模块用于将数据保存到数据库

  

  第一步:首先要爬数据,肯定要知道数据接口了,于是我先到A站随便打开了一个视频,邪恶的按下了F12?,打开了Network模块

      

      

      从浏览器地址和第一个Network可以看到他的入口是: http://www.acfun.tv/v/ac3118819 ,机智的我立马就能想到 最后那一串数字 很可能就是 视频的id(300+万个视频, 差不多吧,B站是600+万),可是这时候问题来了, 我看了他的返回值response后,发现没有我想要的数据, 比如他没有将 观看量、评论量、弹幕数等数据直接返回到页面上,只能在title中拿到这个视频的标题,好的既然这里没有,那么他肯定是另发请求了, 于是在Network请求列表中继续找,终于看到了下图的画面

     

       

        

       这里有一个请求,长得很漂亮: http://www.acfun.tv/content_view.aspx?contentId=3118819&channelId=106,他的返回值非常清新脱俗,我想要的数据他全部打包了,窃喜。。

       简单分析了一下后, 发现这个接口中 contentId 就等于上面 猜想得出 的视频id, 而channelId参数,我去掉后访问下也是没有什么影响

       到这里 就很清楚了 得出以下结论

        1、先通过 http://www.acfun.tv/v/ac+视频id  抓取返回结果,通过 返回结果 和 匹配title 验证此id的视频是否存在,如果存在,就将 视频id 和 视频名称 先保存到 mysql数据库

        2、(视频存在的前提下) 通过 http://www.acfun.tv/content_view.aspx?contentId= 视频id 抓取返回结果,根据上面结果图片的观察,可以得出返回的数组每个下标值都代表什么,将这些数据 通过id更新到mysql数据库

        3、从id = 1 开始循环执行 以上步骤就行了,开几个多线程可以提升很大效率(●'◡'●)

    

       陆陆续续抓了大概一天以后,就能把所有视频全部爬下来了,剩下的只有一件事了, 就是再写一个py脚本,用一条 sql 按 各个类别分别做一个排序分页查询,将结果整理写入成 html 文件

       这是我简单制作的 AcFun TOP100列表页面:

         http://r.wfcapp.cn/acFun

         页面是按手机屏幕为标准写了,电脑打开会比较。。丑!但是请不要在意这些细节!作为程序员的聪明的你,一定能想到按下f12,打开手机模式对吧?

       爬虫的python脚本我放在我的github上了, 地址:

         https://github.com/15058126273/pythonTs/tree/master/Web/Crawler/AcFun 

       因为我还在学习阶段,我所有的python代码都放在这个pythonTs项目里了,所以如果想clone的话 就只能是 http://github.com/15058126273/pythonTs.git 了,文件会比较多,一不小心还会暴露点隐私啥的。。

       

 

 

  

转载于:https://www.cnblogs.com/imyjy/p/5910135.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值