定时抓取招聘信息推送到飞书机器人-v1.1.0

在 版本v1.0.0 实现中发现一些问题:
- 发送给飞书的招聘列表
20
条,且格式很难抓住重点,阅读十分不友好 - 推送策略不及时、重复的问题,每天定时推送
20
条,难免会有重复的,因为招聘网站更新的职位可能没多少。每天推送一次,及时性就很差
为了解决上面的问题,就有了 v1.1.0
版本:
- 每隔
5分钟
执行一次,只推送之前5分钟内
创建的招聘信息。 - 飞书推送消息的格式改为:
消息卡片
,且每条信息单独发送一条消息。
实现
- 定时执行策略实际使用
4分钟
执行一次,而推送消息范围是5分钟
内的,v2ex
的酷工作默认查询排序是按照最后回复时间进行排序的,所以排在前面的是有最新回复内容的,但是对于招聘信息,目前只关注发送的时间节点就行了,所以通过在详细页面获取发布时间,然后对比执行时间与发布时间的差值是否在5分钟内
,为了防止执行启动期间的数据丢失,所以使用4分钟
执行一次,而非5分钟
执行一次。 - 实现中发现消息格式比较复杂,假如使用
struct
定义太麻烦,也不够灵活,所以引入了模版,通过模版文件构造飞书消息。后续其他需要复杂格式的数据体也都容易构造了。(需要注意飞书的消息格式内容需要进行转义或者去掉一些字符,不然会导致格式错误推送消息失败的问题。)
{
"msg_type": "interactive",
"card": {
"config": {
"wide_screen_mode": true
},
"elements": [
{
"tag": "div",
"text": {
"content": "_发布时间:_**{{.PublishTime}}**",
"tag": "lark_md"
}
},
{
"tag": "hr"
},
{
"tag": "div",
"text": {
"content": {{.Content}},
"tag": "lark_md"
}
},
{
"tag": "hr"
},
{
"actions": [
{
"tag": "button",
"text": {
"content": "原文链接",
"tag": "plain_text"
},
"type": "default",
"url": "{{.Url}}"
}
],
"tag": "action"
}
],
"header": {
"template": "turquoise",
"title": {
"content": "{{.Num}}. {{.Title}}",
"tag": "plain_text"
}
}
}
}
- 另外为了防止多个条目同一批次发送时,不容易分辨,所以添加了发布时间以及序号在消息中。在时间处理这块需要注意的是
Github Action
定时执行的时区问题,v2ex
抓取的数据条目中的日期是东八区的时间,所以对比的时候要先进行同时区转换再进行比较。
GitHub - lyf-coder/job-opportunity-reminder at v1.1.0
爬取招聘网站上的招聘信息,然后推送到飞书等通讯工具. Contribute to lyf-coder/job-opportunity-reminder development by creating an account on GitHub.