1 前言
整理邮件垃圾箱时偶然发现COMSOL(多物理场仿真软件)中国给我发了条有用的信息:
COMSOL 用户,您好!
新型冠状病毒肺炎的疫情仍在持续,在疫情期间,COMSOL 中国将向所有注册用户
免费开放 15 个专题,共计 160 小时的视频培训资料,供大家观看学习。
此次开放的培训视频包含基础理论讲解、案例演示,以及课后答疑等内容。
点击以下链接,登入后即可观看:
https://cn.comsol.com/video-training
看到这样的白嫖机会怎能不心动?立马打开网页准备下载,发现一个个下载实在过于繁琐,看来这又是一个给我练习爬虫的机会。
事不宜迟,打开Pycharm,首先用Python轻松获得了所有第一层链接;但随后发现内部的视频加载比较难处理。虽然网页上能够获取到视频链接,python里即使用上Cookies登录也无法得到最后加载完成后的html,应该是对方网站采用了ajax或者其他异步加载策略吧。
本来考虑下一步用python模拟浏览器登录的,但之前没写过相关代码,感觉挺耗时就放弃了。想到之前好像听说有几个爬虫软件很好用,于是下了一个试用下,果然没让我失望。
2 八爪鱼采集流程
2.1 简介
八爪鱼据说是用C#写的,基于Firefox内核浏览器,通过模拟人浏览网页的行为(如打开网页,点击网页中的某个按钮等操作),对网页内容进行全自动提取。
我用下来总的感觉就是:
- “傻瓜式”,基本上不需要什么教程就可以进行简单页面的爬取
- 思路非常清晰,每一步该做什么、会得到什么样的结果,都能很直观地从界面里看到
- 效率高;如果不是经常和爬虫打交道,写代码花费的时间将远超用软件爬取
- 上限够用;比如可以通过cookies模拟登录、自动翻页、xpath定位…足够满足像我这样没有太高要求的用户
2.2 实操
2.2.1 获取每个部分的URL
首先打开八爪鱼采集器,新建自定义任务,地址输入https://cn.comsol.com/video-training。在界面下方的浏览器窗口中点击相应按钮,程序会自动帮我们选取相同tag的元素;
这里我创建一个循环点击每个链接
的循环,来依次进入每个在线播放视频的界面并保存相应的视频下载地址及介绍信息。
2.2.2 模拟登录
发现没有登录是无法进入视频在线播放界面的,这里采用cookies模拟登录的方法:首先在浏览器里登录,调出开发者工具找到当前发出请求用的cookies,直接粘贴到采集器相应栏中。
刷新页面后发现已经变成登录后的界面~
2.2.3 获取视频下载链接
点击浏览器中视频部分,观察智能提示中提取到的字段,惊喜地发现其中含有正确的下载链接;但八爪鱼采集器不方便直接下载这种大文件,这里选择只导出链接及课程介绍性文字。
2.2.4 采集并导出数据
确认流程没有问题之后就可以开始本地采集了,我第一次采集的时候由于两个步骤的间隔时间设的太短导致网页还没加载出来就进入了下一个循环;稍作修改第二次就采集成功了。
选择CSV格式导出数据(还支持Excel和html格式)~
2.3 后续步骤
下载大文件当然是用IDM神器,把数据文本全部粘贴到剪切板,IDM就能识别并下载其中所有的链接。
(我的宿舍网络环境下载速度竟然达到了40M/s,着实惊到我了)
可以看到下载下来的视频文件名是乱的,这个好解决:根据CSV字典编一个重命名的小程序就行了,也就几分钟的事。
3 总结
演示的只是个很简单的小例子,数据量也不大,用八爪鱼这类采集软件能够很快的完成任务;但对于一些大型任务而言,用模拟浏览器的行为来爬取的效率是很低的。
比如我趁科学文库免费这段时间爬取所有书籍下载链接:(花了3个小时才爬了1万多条)
不过我没那么大的数据量需求,所以可能今后会更偏向于使用这种软件来快速完成数据的获取。毕竟写程序的话改一个bug的时间都够我用八爪鱼爬一遍了。