项目简析
立项后,分析一下简单淘客软件的流程:
1.获取商品信息,包括优惠券
2.进行筛选,确定要群发的商品列表
3.启动发送流程,对微信和QQ窗口进行发送
4.根据设定的关键字来进行找券的工作
说起来,写一个个人自用淘客软件就是这么简单,我最初也是这么干的。
我获取商品的方式有二种,一是调用大淘客的API,二是直接从页面抓取
1.API方式简单易行,返回一大堆JSON,程序中建立全局LIST对象,保存就可以了,这个方式有一个缺点就是获取到的商品不一定适合你的群用户。
2.从页面抓取,我最初想到的是用IdHttp的GET方法,不过当我GET大淘客的搜索页面的时候,发现大淘客非常狡猾,当你搜索的时候,他只是简单的返回一个Javascript语句,window.location.href='http://www.dataoke.com/search/?keywords=%E5%9C%A8&xuan=keyword';, 对于这种防抓取的流氓行为,我感到非常生气,这样写我就没办法治你了么?你不就是要在request上加个Referer参数么。但这个时候,我又想到,如果我要获取各类目,要排序,要筛选的话,还是直接框住他的网站比较好,于是我放弃GET抓取,直接程序内加入webbrowser控件,操控你整个网站,也是从那天起,我觉得不能受制于这些垃圾淘客站,一定要有自己的数据库。到今天,我还觉得大淘客的程序员真特么的狗屎。
用控件的好处很显然多了很多,比如我可以利用他的筛选排序分类等所有功能,可以说完全自由化了,整个大淘客上的数据任我采摘,但坏处是,本来只需不到10M内存的程序,现在飙到40M了,就是因为要加载这个网站。
数据有了来路,现在只需嫁接到我的微信机器人上面定时发送就可以了,但这时候还存在一个问题,就是我没有QQ协议,并不能像微信一样扫码登录后想发什么就发什么,全后台。
时间很紧,我没那么多时间去研究QQ协议了,于是采用了一个很原始的方法,就是QQ窗口复制粘贴发送。好处就是开发起来只要几分钟就能搞定,坏处就是如果我要把软件上传到VPS上运行,那还得安装一个QQ,会增加VPS成本,但现在不是考虑这个的时候,必须快速弄起来,只能采取窗口切换发送的方式了。
接着,我又弄找券功能,所谓找券,就是用户不一定喜欢你主动推送的,可能他现在想要一个什么商品,希望你定点寻找此商品的券信息。 我之前加的几个群的机器人很傻B,用户发送找券需求后,机器人要么说“可以私聊群主手动寻找”,要么就只发送一个找到的商品,连图带文往群里回复。
私聊群主这个回复,很显然,是程序开发者功力太差,要手工找券,但你找券只找一个,也不靠谱,用户需要的是多个信息来选择,你让他没选择,倒不如不找这个券。
我思考了一会,要返回大量找券结果,如果有20个,那这20个图文如果全部往群里回,用户体验相当糟糕,我决定返回一个网址,这个网址上面就是所有找券结果的列表展示。用户可以直接点击网址,在网址上面慢慢选择,进行购买。
这个流程是这样的:
1.从大淘客上抓取搜索关键字的商品列表数据
2.处理这些数据,生成json
3.将json数据POST到我的服务器上,动态生成一个网页。
4.将网页地址回复给客户。
经过实际运行发现,如果找10个商品,在10秒内能够返回给客户,20个就是20秒,基本可以接受,但还是有点慢,主要时间都花在控件开网页,处理数据上了。试想,如果你有自己的数据库和网站,你可以秒回一个类似 s?k=关键字的网页地址出去,用户点击进去,同样也是搜索列表页。但目前我刚起步,暂时还要依赖大淘客,慢就慢点,无所谓。
前面说过,微信是协议登录,收发信息全后台,但QQ不同了,我只能往QQ里面发,不能知道别人在群里说了什么话,怎么找券呢?
我想到,之前听过酷Q机器人软件,平时用QQ的时候,也少不了受酷Q机器人使用者的骚扰,于是我去酷Q机器人网站去研究下载。
在这个网站,我惊奇地发现一件事情,此软件似乎是用易语言写的,又或者说是给易语言玩家用的。