事情是这样的:昨天甲方让我们领导帮忙爬点数据,说是最近基金亏的厉害,要弄点数据分析下庄家割韭菜的招式。领导说小意思,转手把这个活儿交给我们部门经理,部门经理看我头发多,就把这个活儿安排给了我。 说实话,我真不想接这个活儿,毕竟啥资源没提供,也没安排工作时间,严重影响摸鱼。仗着平时给经理带过几次肥仔快乐水,我找了个自以为很硬的理由,想暗示一下经理。
经理说没事儿,甲方上面有人。
看来,跑不脱了。
解决思路
给甲方解决这种临时起意的需求,通常第一思路就是有没有替代方案。不至于一上来就搬出Scrapy爬虫框架、找IP代理池、研判目标反爬机制等等。那么多开源的轮子,找几个重新组合一下,赶紧把问题解决了,继续摸我的鱼,看我的剧,它不香么?打工人就要有打工人的觉悟。
我要干的事情,无非三件:
- 找到一个工具,能够自动打开指定的URL,并从对应页面复制数据到指定的存储介质中
- 能够将每次复制的数据结构化合并成一个甲方能理解的形式(估计他只会CSV)
- 不能花钱,这辈子都不可能花钱
经过一番搜索,瞄准了两个开源工具
- webscraper.io/ 无需写代码,了解一些web知识即可录制爬取步骤
- www.nocodb.com/ 无需写代码,了解一些web知识即可搭建使用
具体步骤
改造webscraper
webscraper爬取之后,可以导出一个CSV或者JSON文件,每次都得存在我自己的电脑里,甲方爸爸要数据我还得发给经理,经理再发给甲方爸爸,麻烦死了。遂想到给webscraper增加一个功能,直接把数据存到某个不要钱的云数据库里去,甲方要的时候,自己去看就完了,对了,我怕甲方爸爸看不懂英文插件,还顺手给汉化了一下webscraper。 插件下载地址:github.com/wh0197m/dac…
- 打开chrome插件开发者模式,解压插件,然后上传解压包即可
打开chrome开发者工具,如果看到最后的dac-worker面板及表明安装成功
配置云数据库
在网上找了一个之前一直在用的免费云数据库MemfireDB.com(也不知道该公司靠什么赚钱,反正用了大半年了,挺稳定的,主要是方便,别指望我在本地装数据库,丢了都是我的锅,用第三方服务的,丢了还能扯皮, 搞不好还能赚钱)
- 获取免费的云数据库
- 进入插件配置选项页面,选择数据库作为存储介质
启动API
Chrome extension目前不能直接使用TCPSocket协议,因此没办法extension通过postgres协议访问在线数据库,最简单的办法,本地启动一个web服务进行转发即可。代码简单的很,仓库地址:github.com/wh0197m/dac… api服务下载即可运行: npm install && npm start
启动桌面应用
本身没必要弄个桌面应用,但甲方爸爸根本就不会部署服务啥的,干脆把服务打包到一个桌面应用程序中,借助浏览器的V8引擎跑nodejs服务也是个思路,这样的话,只需要提供一个可运行的桌面程序,就直接把服务帮他启动了,他可以通过桌面应用程序直接访问之前插入了数据的数据库,最终达到了他的目的就行。桌面端下载地址:github.com/wh0197m/dac…
- 填写刚才从MemfireDB获取的免费数据库
- 输入正确的连接信息之后,即可看到爬去到数据库中的数据
总结
说实话,过去是面向谷歌和stackoverflow编程,现在是面向开源编程。时代变了,人工智能写代码的插件tabnine取代了我很多代码的工作,各种第三方服务越来越便宜,甚至直接免费。数据库不用自己搭建和维护了,出了问题,有供应商赔偿;爬虫不用自己写了,录制个操作流,机器代为处理;我都开始怀疑等不到35岁,我就得转行了。 打工人真的不容易。
~老铁们,那个云数据库还多几个邀请码,需要的评论区call我。~