不用采集规则就可以采集(统计某博主某一年内发布的全部微博,并计算转评赞总数)
优采云 发布时间: 2021-08-29 11:08不用采集规则就可以采集(统计某博主某一年内发布的全部微博,并计算转评赞总数)
我只是想统计某个博主在某一年发布的所有微博,并统计了转发和点赞的总数。这么简单的任务。没想到折腾了这么久。
首先是微博数据提供的支付功能。且不说支付,只能算近一年,不能任意规定时间段。比如2020.4.11这一天,只能统计2019.@。对于4.11~2020.4.11的数据,不是每年都要等过年了才算去年的数据吗? ? ?
于是我找到了微博API(),发现很难用。不知道是不是只有我。毕竟我只用过百度和高德的API,经验不够。先创建应用,找了好久才找到入口。它不在[我的应用程序]中,而是在主页上看起来像广告的按钮中。 API接口部分提供的基础公共信息需要授权,OAuth2.0授权因不明原因失败。官方渠道好像无法获取数据,只能自己爬了。
爬虫坑似乎迟早要被填满。我还没有学过,也没有使用过。找了几段别人的代码,改了微博ID后,访问不了。不知道企业微博是否受到保护。 .
最后不得不用优采云采集器来爬取数据。软件虽然好用,但还是费了一番周折才弄明白里面的各种设置。经过无数次的零采集和不完整的数据,最终的设置可能是不必要的,但是这组设置确实可以正确捕获数据,而且不会花费几分钟,所以我不必担心。本文记录了一些踩过的坑以及最终成功的设置。
软件准备
免费下载、安装、注册,免费版就够了。这个任务的数据量不大,本地采集模式就够了。提供了一些模板,也有微博的。
优采云采集器采集template 中提供的微博数据
但微博最麻烦的部分是登录操作。您必须不时输入验证码。另外,全年计算任务需要大量的滚动和翻页操作,所以你还是要使用自定义任务,这是不可避免的。设置采集 URL、采集进程、登录操作。
采集URL
采集 URL的设置基本没有问题。只需在 URL 中找到需要更改的参数即可。当有多个页面时,建议从 URL 设置页码。可靠,自动翻页。怕翻错页,微博页面跳出来登录,所以自动识别总是成功,但是采集开头抓不到1。以我的个人微博主页为例,我查看了2019年6月的博文(#feedtop),发现时间线是按月份划分的。 6月份的微博发的有点多,出现页面变化,需要修改两个参数。 [月] 和 [页数]。
个人微博截图
在优采云采集器中,选择【批量生成】URL,在文本框中选择需要替换的参数,点击【添加参数】进行设置。这里设置的两个参数,[Month]为01~12(软件提供了[Zero Fill]功能,很贴心),[Page Number]为1~4,因为这次要统计的微博数量不每月超过4页,这个要提前看好。
批量生成网址参数设置
自动生成48个网址后,即可【保存设置】开始编辑任务。然后软件会打开第一个网址,开始自动识别这个页面的内容,并生成采集数据的结果,并给出操作提示,基本可信,不完全可信。点击【生成采集设置】自动生成采集进程的框架(毕竟比自己的靠谱),然后调整里面的设置细节(这些细节折腾了好久时间)。
自动识别结果
采集process
自动生成流程图,基本框架没问题。
loop采集的基本框架
开始详细设置,【提取列表数据】没什么好说的,删掉一些不需要的字段就可以了。主要是【循环打开网页】,点击小齿轮打开设置:
在循环中打开网页设置
【网页打开前】这里,我怕加载不全,先打开下一页,设置等待时间3秒。 (我尝试使用cookie设置绕过登录,但是不成功,当前页面获取cookie的按钮没有反应,所以放弃了。)【打开网页后】需要在此处设置滚动。一开始以为滚动2次到最后,后来发现不同的页面不一样,就设置为3次,间隔1秒,加载前也怕跳过。
滚动设置纠结了很久,因为总是出现同样的错误。很明显,一个页面应该加载3次,最后得到45条数据。结果,执行的时候,总是只抓到15个,不给滚动。不知道是我没有登录的原因,还是网页没有等就打开了。
登录操作
为了保证多页面抓取的顺利完成,还是不需要登录的,否则会一直弹出提示登录对话框,采集什么也找不到。说句公道话,微博登录是有cookies记录的,但是放到软件的采集任务里面就不行了。每次启动,一个全新的界面都需要登录。一眨眼,你就认不出你是谁了。记不起来了。所以参考模板中的设置,在循环采集启动之前添加了登录操作,并添加到流程图中,老老实实执行。
流程图中新增登录操作
【打开网页】这里的网址设置为微博入口(),后面的操作设置其实是*敏*感*词*的,直接在预览网页中操作,点击对话框或按钮,和【操作提示】对应会出现actions,可以记录登录时的输入文字(用户名、密码)、点击元素等操作,模拟人工操作,自动添加到流程图中,但可能会在循环后面,需要手动拖拽调整流程图中框的顺序。流程图完成后就可以开始[采集]了。
我觉得这些都设置好了,账号和密码也都记下来了,应该可以代替我先登录。没想到,登录的时候,要么没有输入用户名,要么没有输入密码。结果根本没有登录就执行了下一步,循环开始了,但是什么都没抓到。这时候,打开网页前的3秒等待似乎奏效了。利用这3秒时间,手动输入自动操作中没有输入的用户名或密码,然后点击立即登录。当你打开采集的主页时,我还没完成登录,我终于按照我的想法爬下了每一个收录滚动加载的所有数据的页面,我完成了。
终于完成采集