众所周知,微博热搜是实时更新的,根据用户的关注度高低来确定排名情况,如果错过了,就再也找不到了。由于种种原因,微博从昨天开始停止更新了,一直停留在6月10日15点:
而且我们是无法查到之前的热搜内容的。为了弥补这一缺憾,我想了一个好办法,用python写个定时爬取程序,把爬取的结果保存到数据库中,这样就可以随时翻阅之前的热搜记录了,效果如下:
以火狐浏览器为例,按F12打开流量分析工具,重新请求该网页:
发现每条热搜的内容及热度都在一个class="td-02"的标签下,我们可以先保存所有的该标签,然后在从中解析出热搜内容及热度。
整体思路是用requests模拟获取网页,然后用bs4解析网页,从中提取所有热搜的内容及热度。另外,因为微博必须要登录才能获取热搜信息,所以我们在用requests模拟请求的时候要带上cookie信息,而且微博的cookie信息有效值比较长,这样就省去了模拟登录的麻烦,代码如下:
关于mysql数据库的安装和配置网上教程有很多,这里就不再赘述了。
1.先连接数据库,然后在数据库下创建新表“WEIBO”,在表内创建‘rank、content、hot、now’列,代码如下:
本环节主要用到schedule函数,该函数是一个轻量级的定时任务调度库,可以完成每分钟,每小时,每天,周几,特定日期的定时任务。因此十分便于我们执行一些轻量级的定时任务,用法如下:
上述是60秒执行1次的代码,run函数主要实现上述的爬取及保存数据功能。
也可以1分钟执行1次(起始效果一样,只不过写法不同)
这样就大功告成了!如果一直运行该程序,就能把时间内的所有热搜内容都保存到数据库中。
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
内容反馈