go

go语言
飞书推送

定时抓取招聘信息推送到飞书机器人-v1.2.0-支持电鸭社区

GitHub - lyf-coder/job-opportunity-reminder: 爬取招聘网站上的招聘信息,然后推送到飞书等通讯工具爬取招聘网站上的招聘信息,然后推送到飞书等通讯工具. Contribute to lyf-coder/job-opportunity-reminder development by creating an account on GitHub.GitHublyf-coder 在 v1.1.0 版本上开发,支持抓取 电鸭社区-招聘 数据推送到飞书机器人 * 抓取数据地址: https://eleduck.com/categories/5?sort=new * 通过观察网络请求,发现数据也是后端渲染到页面中,所以需要从页面中提取,比较有趣的是在观察页面的过程中,发现页面上是存在结构化的 json 格式的数据,如图所示: 通过 script 标签的 id=__NEXT_DATA__ 可以获取该数据。
4 min read
定时抓取招聘信息推送到飞书机器人-v1.1.0
飞书推送

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

在 版本v1.0.0 实现中发现一些问题: * 发送给飞书的招聘列表 20 条,且格式很难抓住重点,阅读十分不友好 * 推送策略不及时、重复的问题,每天定时推送 20 条,难免会有重复的,因为招聘网站更新的职位可能没多少。每天推送一次,及时性就很差 为了解决上面的问题,就有了 v1.1.0 版本: * 每隔 5分钟 执行一次,只推送 之前5分钟内 创建的招聘信息。 * 飞书推送消息的格式改为: 消息卡片 ,且每条信息单独发送一条消息。 实现 * 定时执行策略实际使用 4分钟 执行一次,而推送消息范围是 5分钟 内的, v2ex 的酷工作默认查询排序是按照最后回复时间进行排序的,所以排在前面的是有最新回复内容的,但是对于招聘信息,目前只关注发送的时间节点就行了,所以通过在详细页面获取发布时间,然后对比执行时间与发布时间的差值是否在 5分钟内 ,为了防止执行启动期间的数据丢失,
3 min read
定时抓取招聘信息推送到飞书机器人-v1.0.0
go

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

因为有不少网站论坛都提供一些招聘信息,包括兼职、全职、远程等等,每次都要不停的切换网站去查看,也经常漏掉一些不错的机会,还有一个就是有些是墙外的网站,有时候翻不过去就没办法查看。当然,还有一些其他想法,不过第一阶段主要就是解决这些问题。脑袋里就有了如下的想法: * 运行环境。因为是定时执行,而且还有墙外的网站,考虑到做出来的东西能让有需要的小伙伴一起用,脑袋灵光一闪,直接利用 Github Action 定时执行就好了,而且有需要的小伙伴直接 fork 一下,配置下相关环境变量就可以拥有自己的招聘信息推送机器人了。 * 开发语言选择。考虑后面扩展后, Github Action 的运行环境不大满足,那么能本地运行就挺好,所以希望产出是一个不需要环境依赖的可执行文件,能小点就小点,那就选 Go 吧。 * 抓取及处理策略。不同的网站数据格式不一样,需要根据网站添加解析策略,同时为了更有针对性过滤自己需要的信息,应该能够按照配置的 关键词 时间范围进行过滤。 * 推送。这里选了飞书,主要是使用飞书可配置 webhook 自定义机器人,消息格式也比较丰富些,其他的接收端也可以,
11 min read
go

Go指南-练习:Web 爬虫 的实现

Go 语言之旅Go 指南 练习:Web 爬虫 在这个练习中,我们将会使用 Go 的并发特性来并行化一个 Web 爬虫。 修改 Crawl 函数来并行地抓取 URL,并且保证不重复。 提示:你可以用一个 map 来缓存已经获取的 URL,但是要注意 map 本身并不是并发安全的! 实现: * 使用加锁的map类型保证并发安全-定义了: CrawlUrlMap * 使用 sync.WaitGroup 保证协程全部执行完后再退出主进程 package main import ( "fmt" "sync" ) type Fetcher interface { // Fetch 返回 URL 的 body 内容,并且将在这个页面上找到的 URL 放到一个 slice
2 min read
go

Golang 整理1-基本语法

go / Golang 编程语言学习 官方提供了教程,中文版的教程地址 可以边练习边学习 语法声明格式 https://blog.go-zh.org/gos-declaration-syntax 从左到右的规则   从左到右的写法与读法,符合读写习惯,尤其对于调用无名称的方法时尤为明显,如: func(a, b int) int { return a+b } (3, 4) 可以从左到右这样读出语义:一个函数,参数是 a 和 b ( int)类型的,返回值是: int 类型的,函数体是 {return a+b } ,执行该函数传入的参数是 3 和 4 数组类型   定义数组是 var a
6 min read