爬取闲鱼某关键字实时信息,将最新的发送到钉钉群聊
写了一个异步爬取闲鱼商品最新信息推送到钉钉
图中的需求有两个部分值得学习。
- 多线程爬取最新关键字的商品信息
- python对钉钉的操作
这个多线程是依靠关键字的数量,启动线程。比如可以是线程数
=关键字的数量/5。具体接口参考github组织中的例子,24小时采集 然后将线程加入到while True中。关键字与价格区间可以在闲鱼接口链接中自定义。
针对钉钉是一个很好的信息传输方式,钉钉的开发文档详细讲述了如何调用钉钉的api。
- 注册钉钉账号
- 手机创建钉钉组织
- 用自己创建的组织登录桌面版的钉钉应用(要用自己创建组织的钉钉才能登录带有自己权限的管理后台-web端亦是如此)
- 创建群聊。在群聊中找到机器人,自定义机器人,找到webhook(这便是钉钉的发送信息的api)
- 查阅钉钉开发者文档
虽然没有python版的介绍。可是api是通用的。api介绍也是很丰富。
推荐看下web版的后台管理,这是一个很好的开发场地。
如何知道获取最新的商品数据
使用数据库,将爬取商品的详情链接存储到数据库中,每次判断数据库中是否有此商品链接数据,若存在,便不是最新。若不存在,推送到钉钉群,然后数据插入数据库。
优化数库的存储方式
这个方面我没有深入思考,简单的把关键字存到数据库中,没一次线程爬取从数据库中读取现有的数据库关键字。
暂停就是数据库中的某个关键字的字段删除。
(这点为了不值得使用吧!)
本项目采用异步爬取,对于闲鱼速度快,效率高。
注意事项
- 钉钉接口每个机器人每分钟只能发送20条信息。次数太多会被限制。一个群聊可以创建6个机器人的webhook。建议将次6条都加入到程序的机器人队列
- 钉钉接口存在敏感字检测。当爬取的信息触发了阿里系的检测系统,信息不能发送。这里在日志面板给出已经提示。
- 经过测试100多关键字的爬取效率在8-10s内完成。
- 给出的关键字描述尽可能精确,避免大范围的搜索。如错误示例:关键字‘空调’ 范围广与‘空调’+品牌 或 ’空调‘+ 功能部件,缩小搜索范围。
- 程序的爬取频率设定时间尽量多一些。否者爬取的发送信息很多,将导致钉钉接口失效。这里爬取频率代表一个全部爬虫结束到下一次爬虫开始的时间。建议设置为10s左右。将会10秒后进行下一次执行。
- 发送方式 :1-单文本发送(若消息过多,钉钉接口限制),2-连接文本发送(手机端不支持跳转闲鱼app),3-markdown文本(推荐、将一次爬取的消息汇聚到个文本中,较少钉钉接口压力)
- 添加关键字:关键字不为空,价格若不填则搜索时为全价。
- 删除关键字:选中关键字任务,点击删除,确认删除。
- 单项开启:选中关键字任务,点击开启,任务单独开启
- 单项关闭:选中关键字任务,点击关闭,任务单独关闭
- 一键开启:点击一键开启,默认开启全部任务
- 一键关闭:点击一键关闭,默认关闭全部任务
- 更新配置:实时更新爬取频率,发送方式
- 清除缓存:清除缓存文件。软件长时间使用产生大量缓存文件,硬件运行效率下降
- 清空配置:清除所有配置选项+缓存文件。一般不建议使用
- 日志文件:输出日志信息
- 系统日志:输入操作信息
- 钉钉机器人-添加机器人:添加钉钉机器人的webhook完整链接
- 钉钉机器人-删除机器人:选中机器人链接,点击删除,删除成功
- 钉钉机器人-测试机器人:测试插入的webhook是否有效。将发送'欢迎测试闲鱼信息及时推送器-机器人验证'到钉钉群
后续更新
搭配mongodb使用,配置服务