声明: 本博文和相关代码仅供个人学习使用。
需求
现在购物网站越来越多,优惠常常有,但是又不一定正好被你撞见,而且每天上网逛商城也挺浪费时间的。偶然看到优惠信息了吧,又已经过期或者被秒杀光了。所以我想做一个程序能够定时在网站上搜索相关产品的优惠信息,在抓到信息后第一时间通知自己。去所有电商网站抓取肯定不现实,最方便的做法就是直接去类似“什么值得买”或者”买个便宜货”这类的消息聚合网站上提取信息啦。
程序要做到的:
- 定时抓取相关关键词的优惠信息
- 发现新的优惠发送微信通知(这里使用微信企业号开发平台)
- 已经发送过的信息不再发送第二次
首先先把最终效果展示一下 :
已经发送过的信息不会重复发送
微信会收到优惠信息的标题,发布时间以及连接地址,这样就可以直接在手机端打开查看了。
程序相关设计
模块设计
大致分为:HTTP处理、文件处理、微信接口三个部分。简要介绍一下,具体代码可以看附录的Github项目。
HTTP处理
需要实现项目如下:
- 简单的http的GET\POST请求
- 处理网页DOM文档,将优惠信息提取出来
- 设计优惠信息的数据结构
具体代码不贴了,GET\POST代码网上一大堆。处理DOM文档主要用的jsoup,文档也是一大堆。优惠信息主要只记录标题、详情、日期、时间、URL连接这些内容。
文件处理
只要实现:将优惠信息的数据列表存成文件、从文件中读取数据列表即可。简单接口如下:
//读取
public static List<FoundItem> read() throws FileNotFoundException, IOException;
//写入
public static void write(List<FoundItem> items) throws IOException;
微信
主要实现两个功能:获取token,发送信息。由于发送信息时候的url需要带上token,因此一个完整的发送消息过程应该以此调用上述两个过程的代码。
1、 获取token
//获取token用Http get即可,在地址中带上corpId, corpsecret字符串即可<