闲鱼数据爬取

写了一个异步爬取闲鱼商品最新信息推送到钉钉

随便写的,想到哪写到哪

图中的需求有两个部分值得学习。

  • 多线程爬取最新关键字的商品信息
  • python对钉钉的操作

多线程爬取最新关键字的商品信息

这个多线程是依靠关键字的数量,启动线程。比如可以是线程数=关键字的数量/5。具体接口参考github组织中的例子,24小时采集 然后将线程加入到while True中。关键字与价格区间可以在闲鱼接口链接中自定义。

python对钉钉的操作

针对钉钉是一个很好的信息传输方式,钉钉的开发文档详细讲述了如何调用钉钉的api。

  • 注册钉钉账号
  • 手机创建钉钉组织
  • 用自己创建的组织登录桌面版的钉钉应用(要用自己创建组织的钉钉才能登录带有自己权限的管理后台-web端亦是如此)
  • 创建群聊。在群聊中找到机器人,自定义机器人,找到webhook(这便是钉钉的发送信息的api)
  • 查阅钉钉开发者文档

虽然没有python版的介绍。可是api是通用的。api介绍也是很丰富。

推荐看下web版的后台管理,这是一个很好的开发场地。

如何知道获取最新的商品数据

使用数据库,将爬取商品的详情链接存储到数据库中,每次判断数据库中是否有此商品链接数据,若存在,便不是最新。若不存在,推送到钉钉群,然后数据插入数据库。

优化数库的存储方式

暂停与开始

这个方面我没有深入思考,简单的把关键字存到数据库中,没一次线程爬取从数据库中读取现有的数据库关键字。

暂停就是数据库中的某个关键字的字段删除。

(这点为了不值得使用吧!)

使用说明

本项目采用异步爬取,对于闲鱼速度快,效率高。

注意事项

  • 钉钉接口每个机器人每分钟只能发送20条信息。次数太多会被限制。一个群聊可以创建6个机器人的webhook。建议将次6条都加入到程序的机器人队列
  • 钉钉接口存在敏感字检测。当爬取的信息触发了阿里系的检测系统,信息不能发送。这里在日志面板给出已经提示。
  • 经过测试100多关键字的爬取效率在8-10s内完成。
  • 给出的关键字描述尽可能精确,避免大范围的搜索。如错误示例:关键字‘空调’ 范围广与‘空调’+品牌 或 ’空调‘+ 功能部件,缩小搜索范围。
  • 程序的爬取频率设定时间尽量多一些。否者爬取的发送信息很多,将导致钉钉接口失效。这里爬取频率代表一个全部爬虫结束到下一次爬虫开始的时间。建议设置为10s左右。将会10秒后进行下一次执行。
  • 发送方式 :1-单文本发送(若消息过多,钉钉接口限制),2-连接文本发送(手机端不支持跳转闲鱼app),3-markdown文本(推荐、将一次爬取的消息汇聚到个文本中,较少钉钉接口压力)
  • 添加关键字:关键字不为空,价格若不填则搜索时为全价。
  • 删除关键字:选中关键字任务,点击删除,确认删除。
  • 单项开启:选中关键字任务,点击开启,任务单独开启
  • 单项关闭:选中关键字任务,点击关闭,任务单独关闭
  • 一键开启:点击一键开启,默认开启全部任务
  • 一键关闭:点击一键关闭,默认关闭全部任务
  • 更新配置:实时更新爬取频率,发送方式
  • 清除缓存:清除缓存文件。软件长时间使用产生大量缓存文件,硬件运行效率下降
  • 清空配置:清除所有配置选项+缓存文件。一般不建议使用
  • 日志文件:输出日志信息
  • 系统日志:输入操作信息
  • 钉钉机器人-添加机器人:添加钉钉机器人的webhook完整链接
  • 钉钉机器人-删除机器人:选中机器人链接,点击删除,删除成功
  • 钉钉机器人-测试机器人:测试插入的webhook是否有效。将发送’欢迎测试闲鱼信息及时推送器-机器人验证’到钉钉群

推荐数据