章鱼采集器自定义任务爬取微博数据
我只是想统计某个博主在某一年发布的所有微博,统计总的评论和点赞数。 这样的任务听起来很简单。 没想到会花这么长时间。
首先是微博数据提供的支付功能。 缴费就更不用说了,只能算过去一年,不能随意指定时间段。 是不是每年都要等到除夕才算去年的数据? ? ?
于是找了Weibo API(),发现很难用。 不知道是不是只有我这么想。 毕竟我只用过百度和高德的API,经验还不够。 先创建应用,找了半天入口。 它不在【我的应用】里,而是像广告一样在首页花哨的按钮里。 API接口,提供的一些基本公开信息需要授权,不知为何,.0授权失败。 貌似没办法通过官方渠道获取数据,只能自己爬取了。
爬虫坑好像迟早要填上的。 我还没学过,也没用过。 找了几段别人的代码,改了微博ID,就进不去了。 不知道企业微博有没有保护。
最后只好中途爬取数据,使用章鱼收集器()。 软件虽然简单易用,但是了解里面的各种设置还是费了一番功夫。 经过无数次的零采集和不完整的数据,最后的设置可能是多余的,但是这套设置确实可以正确的采集到数据,慢不了几分钟,不用着急。 本文记录踩过的一些坑和最后成功的设置。
软件准备
免费下载、安装和注册。 免费版就够了。 这个任务的数据量不大,本地采集的方式就可以了。 它提供了一些模板,包括微博。
八达通采集器提供的微博数据采集模板
但是微博最麻烦的就是登录操作了。 有时,您必须输入验证码。 另外统计全年的任务需要大量的滚动、翻页等操作,所以还是要使用自定义任务,设置采集URL、采集流程、登录操作是不可避免的。
收集网址
收藏URL的设置基本没有问题。 只需在 URL 中找到需要更改的参数即可。 当有多个页面时,建议从 URL 设置页码。 它更可靠。 我害怕自动翻页。 微博页面一翻就跳出来让你登陆,所以自动识别总是成功的,但是开始收藏的时候一个都抓不到。 以我的个人微博主页为例,查看2019年6月的博文(#),发现时间线是按月划分的,6月份的微博多了一点,而且有换页,所以两个参数需要修改,【月份】和【页数】。
个人微博截图
在八达通采集器中,选择【批量生成】网址,在文本框中选择需要替换的参数,点击【添加参数】进行设置。 这里设置的两个参数,[月]为01~12(软件提供了[补零]功能,很贴心),[页码]为1~4抓取微博,因为这次要统计的微博数不超过4页,这个要提前看好。
批量生成网址参数
自动生成 48 个 URL 后,您可以【保存设置】并开始编辑任务。 然后软件会打开第一个网址,开始自动识别这个页面的内容,并生成数据采集结果,并给出操作提示,基本可信,但不完全可信。 点击【 】自动生成采集过程的框架(毕竟比自己搭建靠谱),然后在里面调整细节设置(就是这些细节折腾了好久) .
自动识别结果
采集过程
自动生成的流程图基本框架没有问题。
循环获取的基本框架
开始详细设置,【提取列表数据】没什么好说的,删掉一些不需要的字段就OK了。 主要是【循环打开网页】,点击小齿轮打开设置:
循环打开网页设置
【网页打开前】这里如果加载没有完成,会打开下一页,设置等待3秒。 (我尝试过使用这里的设置绕过登录,但是没有成功,获取当前页面的按钮也没有反应,所以放弃了。)【网页打开后】这里必须设置为滚动,一开始以为 2 第一次是结束,后来发现不同的页面不一样,就设置成3次,间隔1秒,也是怕加载前跳过.
我在滚动设置上纠结了很久,因为总是出现同样的错误。 很明显,一个页面要加载3次,最后得到45条数据。 结果在执行的时候一直只抓到15条数据,并没有roll。 不知道是不是因为我没有登录抓取微博,或者是没等打开网页就打开了。
登录操作
为了保证多页面爬取的顺利完成,还是需要登录的,否则会一直弹出提示登录的对话框,采集不到任何东西。 按理说,微博登陆是有记录的,但是放到软件的采集任务里就不行了。 每次启动都会有一个新的界面要求登录,一眨眼就认不出自己是谁了。 记住。 于是参照模板中的设置,在开始循环采集之前添加了登录操作,并添加到流程图中,老老实实执行。
在流程图中添加登录操作
【打开网页】这里的URL设置为微博入口(),后面的操作设置其实是半自动的。 可以直接在预览的网页上进行操作,点击对话框或按钮,【操作提示】中会出现相应的界面 动作可以记录输入的文字(用户名,密码),点击登录时的元素,模拟人为操作,自动添加到流程图中,但可能会在循环后面,需要手动拖入流程图框,调整顺序,流程图完成后开始【采集】。
本来以为设置完这些就可以了,而且我也记下了账号和密码,所以应该可以代替我先登录。 没想到登录的时候,要么没有输入用户名,要么没有输入密码,结果根本没有登录就执行了下一步,开始循环了,结果什么也没有抓到。 这时候,打开网页前的3秒等待似乎起作用了。 抓住3秒的时间,手动输入自动运行时没有输入的用户名或密码,然后立即点击登录,在打开待采集主页前完成。 登录后,我终于爬下了每个页面,包括我想要的滚动加载的所有数据,你就完成了。
最终收藏