V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 外包信息请发到 /go/outsourcing 节点。
• 不要把相同的信息发到不同的节点
vicalloy
V2EX  ›  酷工作

招聘网站岗位信息更新监控工具

  •  
  •   vicalloy · 2019-02-17 20:45:29 +08:00 · 1322 次点击
    这是一个创建于 2124 天前的主题,其中的信息可能已经有所发展或是发生改变。

    项目地址: https://github.com/vicalloy/jobmonitor/

    近期把之前写的的一个小工具重构了一下放到 Github。这个工具可以监控招聘网站工作岗位更新情况并发送通知。

    目的

    • 招聘网站的问题
      • 招聘网站每天都会显示大量的岗位更新,但大多岗位都是常年发布,要从这些岗位里过滤出真正更新的岗位并不容易。
      • 招聘网站的搜索功能还不够完善,做不了高度个性化的定制化搜索条件。
      • 专业论坛的招聘版块,几乎没有搜索功能。
    • 这个工具可以做什么
      • 支持定制招聘网站搜索条件,并对网站提供的标准搜索功能进行少量增强。
      • 对检索到的工作岗位进行过滤,如果该岗位之前已发布过,自动忽略。
      • 可部署在服务器上,设置定时任务方式定时推送岗位更新,支持多种消息推送方式。
      • 新工作岗位通知方式支持:显示到控制台、保存到文件、发送到 Slack (强烈推荐 Slack )。注:如果想支持微信、邮件的通知,需要自行扩展。
      • 内置了 51JOB 和 V2EX 的支持。注:如需要支持其他招聘网站,需要自行进行扩展。

    使用范例

    • 初始化项目
    $ mkdir jobs
    $ cd jobs
    $ pip install pipenv --upgrade
    $ pipenv --python 3.6
    $ pipenv shell
    $ pipenv install lbjobmonitor
    
    • 创建jobs.py。使用python jobs.py执行查询。
    • 可在服务器上使用 crontab 设置定时任务,定期检查
    # jobs.py
    import os
    
    from lbjobmonitor.message import CLIMessageBackend
    from lbjobmonitor.message import FileMessageBackend
    from lbjobmonitor.monitor import QCWYJobMonitor
    from lbjobmonitor.storage import JobMonitorJsonStorage
    
    
    BASE_DIR = os.path.dirname(os.path.abspath(__file__))
    DATA_DIR = BASE_DIR
    
    
    def qcwy():
        params = {  # 51job 的查询参数。51job 设置好查询条件后发起查询,通过 chrome 的调试功能查看请求的具体参数。
            'saltype': '',  # 薪资范围
            'keyword': 'python',  # 关键词
            'postchannel': '0000',
            'keywordtype': '2',
            'jobarea': '080200',  # 地区编码
            'pagesize': '5',  # 每页记录数
            '': ''
        }
        storage = JobMonitorJsonStorage(base_path=DATA_DIR)  # 使用 JSON 方式将工作列表保存到当前目录
        message_backend_list = [  # 显示的推送方式
            CLIMessageBackend(),  # 显示到控制台
            FileMessageBackend(fn=os.path.join(DATA_DIR, 'jobs.txt'))  # 保存到文件
        ]
    
        monitor = QCWYJobMonitor(
            storage=storage, message_backend_list=message_backend_list)
    		# monitor.max_page_idx = 1  # 最多查询页数,设置成 1 方便调试
        skip_words = ['AI']
        monitor.monitor_jobs(params=params, skip_words=skip_words)  # 执行查询
    
    
    if __name__ == "__main__":
        qcwy()
    

    注: 还为这个工具做了一个 web 前端界面 https://github.com/vicalloy/jobmonitorweb/ 可通过 web 端查看推送信息。不过个人觉得用 slack 或 telegram 接收和查看推送信息更方便。

    1 条回复    2019-02-18 14:25:17 +08:00
    lopetver
        1
    lopetver  
       2019-02-18 14:25:17 +08:00
    赞啊,正有这方面的需求,star 了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5446 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 01:50 · PVG 09:50 · LAX 17:50 · JFK 20:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.