首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >叮!你的校招提醒微信机器人已上线!

叮!你的校招提醒微信机器人已上线!

作者头像
一点儿也不潇洒
发布2018-08-07 10:09:21
1.5K0
发布2018-08-07 10:09:21
举报
文章被收录于专栏:肖洒的博客肖洒的博客

招聘季即将到来,如何实时的得知招聘信息呢?自然是爬虫+微信了。 这几日在票圈和各微信群看到大家疯狂刷“京东”、“腾讯”等秋招类的“广告”,我对这些营销方式存怀疑态度,觉得一定不是官方的!总感觉有恶意营销在里面。 有需求就有市场,为什么不自己写一个校招提醒机器人呢?简单的想了下,爬虫+微信模式应该是最好的搭配了。

原理

原理主要分为两部分:爬虫+微信机器人。

爬虫

讲道理西电就业信息应该挺好爬的吧,网站虽然丑一点,但是内容才是最重要的。就用最简单的请求方式去获取网站内容,居然Forbidden了。

26475337410507141.png
26475337410507141.png

那好吧,只能伪装浏览器了。

headers = {'User-Agent' : 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:29.0) Gecko/20100101 Firefox/29.0'}  
    req = urllib.request.Request(url=url,headers=headers)

这样就ok。

完整的抓取网站信息代码:

def getPageContent(url):
    headers = {'User-Agent' : 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:29.0) Gecko/20100101 Firefox/29.0'}  
    req = urllib.request.Request(url=url,headers=headers)
    try:
        res = urllib.request.urlopen(req)
    except urllib.error.URLError as e:
        return e
    page_content = res.read()
    page_content=BeautifulSoup(page_content,"lxml")
    return page_content

就业信息网长这样:

image.png
image.png

北校区招聘会信息的table长这样:

image.png
image.png

找到标签那就剥洋葱的爬呗:

def getJobInfo(page_content):
    job_content = page_content.find("table", {"class": "zphTable"})
    rows = job_content.findAll("tr")[1:]
    job_info=[]
    for row in rows:
        for cell in row.findAll('td'):
            info=cell.get_text()
            job_info.append(info)
    return job_info

南校区的信息结构和北校区一样,同样试用上面的程序。

对于爬虫的招聘会信息还需做处理,用于后面微信发送。 处理的代码:

def xdjob(jobinfo):
    urlN = 'http://job.xidian.edu.cn/html/zpxx/bxqzph/'
    urlS = 'http://job.xidian.edu.cn/html/zpxx/nxqzph/'
    page_contentN=getPageContent(urlN)
    page_contentS=getPageContent(urlS)
    job_infoN=["【北校区招聘会信息】"]+getJobInfo(page_contentN)
    job_infoS=["【南校区招聘会信息】"]+getJobInfo(page_contentS)
    job_info = job_infoS+job_infoN
    jobinfo='『本条由机器喵自动发出,是个机器人大家勿撩哦』'+"\n"
    for i in job_info:
        jobinfo=jobinfo+ "\n" +i
    return jobinfo

至此,爬虫的工作已完成。

微信机器人

之前微信好友分析使用过itchat,真的是非常好的一个库。

这次要做的工作简单点,找到指定的群聊名,将爬取的就业信息发送即可。

def wx(jobinfo2):

    itchat.auto_login(hotReload = True)# 可设置hotReload = True
    i=itchat.get_chatrooms(update=True)
    name = "西电求职交流群"
    iRoom = itchat.search_chatrooms(name)
    for room in iRoom:
        if room['NickName'] == name:
            userName = room['UserName']
        break
    itchat.send_msg(jobinfo2, userName)

具体的工作流程为:

  • 登录微信
  • 获取所有群聊名称
  • 匹配要发送信息的微信群
  • 发送指定信息

至此爬虫+微信机器人的工作均已完成。 可是总不能天天手动去运行程序吧,那我为什么不去看就业信息网站上的信息呢。 做程序员呢,最重要的就是一定要懒。 设置一个定时器呗,每天运行一次。基本上就能满足需求了。

def timer(n):
    itchat.auto_login(hotReload=True)  # 可设置hotReload = True
    while True:
        jobinfo=''
        wx(xdjob(jobinfo))
        time.sleep(n)

这样就行了,主程序运行timer(86400),每日更新一波。最后再部署到云服务器就好了。

最后

这点信息总感觉太少,还望大家多多提供点靠谱的招聘信息网站,有兴趣的也可以联系我,一起把这个功能丰富起来。 方便他人,方便自己。

V1.2

同学给的几点建议:

  • 去掉过期的招聘会信息
  • 增加交大、西工大的招聘会信息
  • 增加应届生招聘网站上的信息

我是从西电就业信息网直接爬取,网站上的信息并为做过期处理。 这样一想有没有可能从其他招聘网站上抓取第二手信息呢,他们应该做过处理。 果不其然,海投网!直接解决了第一第二点的建议。 上代码:

def xdjob(jobinfo):
    urlXD = 'https://xjh.haitou.cc/xa/uni-29'
    urlXJ = 'https://xjh.haitou.cc/xa/uni-27'
    urlGD = 'https://xjh.haitou.cc/xa/uni-28'
    urlEnterprise='http://www.yingjiesheng.com/2019/'
    page_contentN=getPageContent(urlXD)
    page_contentS=getPageContent(urlXJ)
    page_contentG = getPageContent(urlGD)
    job_infoXD=["--------------------"+"\n"+"【西电招聘会信息】"]+getJobInfo(page_contentN)
    job_infoXJ=["--------------------"+"\n"+"【西交招聘会信息】"]+getJobInfo(page_contentS)
    job_infoGD = ["--------------------"+"\n"+"【瓜大招聘会信息】"] + getJobInfo(page_contentG)
    job_info = job_infoXD+job_infoXJ+job_infoGD
    jobinfo='『今日招聘信息,以下数据为机器喵自动获取,仅供参考。有任何问题请艾特我群主爸爸@肖洒』'+"\n"
    for i in job_info:
        jobinfo=jobinfo+ "\n" +i
    jobinfo=jobinfo + "\n"+"--------------------"+"\n"+"【名企2019校园招聘进度表】" + getEnter(urlEnterprise)
    return jobinfo

完美! 关于第三点,这个应届生的网站真心写的好乱。。不过不能扒的网站呢! 上代码:

def getEnter(urlEnterprise):
    page_content = getPageContent(urlEnterprise)
    job_content = page_content.findAll("div", {"class": "s_clear tit floatl"})[2:]
    job_info = []
    for div in job_content:
        url = div.a.attrs["href"]
        if url[:4] == "http":
            pass
        else:
            url = "http://www.yingjiesheng.com" + url
        info = div.get_text() + "\n"+ url
        job_info.append(info)
    jobinfo = ""
    for i in job_info:
        jobinfo = jobinfo + "\n" + i
    return jobinfo

最后现在的效果:

7213390981083791.jpg
7213390981083791.jpg

V1.3

遇到的问题

西电这几日没有招聘会信息发布,所以西电部分的爬虫抛出异常。 已解决,修改如下:

def xdjob(jobinfo):
   
    urlXD = 'https://xjh.haitou.cc/xa/uni-29'
    urlXJ = 'https://xjh.haitou.cc/xa/uni-27'
    urlGD = 'https://xjh.haitou.cc/xa/uni-28'
    urlEnterprise='http://www.yingjiesheng.com/2019/'
    try: 
        page_contentN=getPageContent(urlXD)
        job_infoXD=["--------------------"+"\n"+"【西电招聘会信息】"]+getJobInfo(page_contentN)
    except:
        job_infoXD=["--------------------"+"\n"+"【西电今日无招聘会信息哦】"]

    try:

        page_contentS=getPageContent(urlXJ)
        job_infoXJ=["--------------------"+"\n"+"【西交招聘会信息】"]+getJobInfo(page_contentS)
    except:
        job_infoXJ=["--------------------"+"\n"+"【西交今日无招聘会信息哦】"]

    try:

        page_contentG = getPageContent(urlGD)
        job_infoGD = ["--------------------"+"\n"+"【瓜大招聘会信息】"] + getJobInfo(page_contentG)
    except:
        job_infoXJ=["--------------------"+"\n"+"【瓜大今日无招聘会信息哦】"]
    job_info = job_infoXD+job_infoXJ+job_infoGD
    jobinfo='『今日招聘信息,以下数据为机器喵自动获取,仅供参考。有任何问题请艾特我群主爸爸@肖洒』'+"\n"
    for i in job_info:
        jobinfo=jobinfo+ "\n" +i
    # jobinfo=jobinfo + "\n"+"--------------------"+"\n"+"【名企2019校园招聘进度表】" + getEnter(urlEnterprise)
    return jobinfo

V1.4

遇到的问题

由于itchat的问题,网页版微信并不能一直保持在线,导致定时发送服务总是因为掉线而抛出异常。 解决办法:itchat在移动端微信保持稳定登录的情况下,30分钟内是可以保证在线的。所以想到每30分钟发一次信息,保持登录的状态,每24小时给求职群里发一次招聘会信息。具体实现方法:

n=0
while True:
    itchat.auto_login(hotReload=True)  # 可设置hotReload = True
    wx('TEST','别玩手机哦')
    timer(1800)
    n=n+1
    print("循环到第:"+str(n)+"次,还剩"+str(48-n)+"次即可触发爬虫")
    while n == 48 :
        jobinfo=""
        wx('西电求职交流群',xdjob(jobinfo))
        n=0

V2.0

增加睿思的招聘信息

这几天已经用获得的招聘信息疯狂投递简历了。为了丰富招聘信息,根据之前的经验和代码,整合了下,抓取睿思校园招聘板块的信息,进行处理后进行微信发送。 睿思板块抓取的程序:

def rs():
    pageURL = set()
    job_rs = '『睿思校园招聘信息,机器喵自动获取,仅供参考』'
    for i in range(1, 2):
        pages = 'http://rsbbs.xidian.edu.cn/forum.php?mod=forumdisplay&fid=554&page=' + str(i) + '&mobile=2'
        if pages not in pageURL:
            headers = {
                'User-Agent': r'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) '
                              r'Chrome/45.0.2454.85 Safari/537.36 115Browser/6.0.3',
                'Referer': r'http://rsbbs.xidian.edu.cn',
                'Connection': 'keep-alive'}
            req = request.Request(pages, headers=headers)
            html = request.urlopen(req)
            bsObj = BeautifulSoup(html.read(), "lxml")
            tiezi = bsObj.findAll("ul")
            for tiaos in tiezi:
                for tiao in tiaos.findAll('a'):
                    for person in tiao.findAll('span', attrs={'class': "by"}):
                        T = person.get_text().strip()
                        [s.extract() for s in tiao.findAll('span', attrs={'class': "by"})]
                    P = tiao.get_text().strip() + "﹝详细信息﹞:"
                    job_rs = job_rs + "\n" + str(P)
                    if 'href' in tiao.attrs:
                        try:
                            tiao_links = "http://rsbbs.xidian.edu.cn/" + tiao.attrs['href']
                            tiao_html = urlopen(tiao_links)
                            job_rs = job_rs + "\n" + str(tiao_links)
                            tiao_bsObj = BeautifulSoup(tiao_html.read(), "lxml")
                            content = tiao_bsObj.findAll("div", {"class": "message"})[0]
                            R = content.get_text().strip()
                        except (ValueError, IndexError) as e:
                            pass
                        pageURL.add(pages)
        time.sleep(3)  # 设置时间间隔为3秒
        return job_rs

得到的信息如下:

『睿思校园招聘信息,机器喵自动获取,仅供参考』
阿里巴巴数据技术及产品部-校园交流﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951547&extra=page%3D1&mobile=2
阿里-菜鸟2018年网络测试开发工程师部门直招﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951510&extra=page%3D1&mobile=2
(散金币)百度搜索公司SRE团队2019年校招提前批﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951473&extra=page%3D1&mobile=2
错投男儿胎,找个家教兼职都这么难(都要求女生)﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951464&extra=page%3D1&mobile=2
阿里巴巴菜鸟 测试开发工程师 内推招聘﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951463&extra=page%3D1&mobile=2
乐馨托管招聘作业辅导老师一名﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951461&extra=page%3D1&mobile=2
[散金币]  西安葡萄城信息技术有限公司2019校园招聘﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951451&extra=page%3D1&mobile=2
西安诺瓦科技2019届提前批校招开始啦,与独角兽一起开疆拓土~~~~~﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951338&extra=page%3D1&mobile=2
平安租赁招实习生啦﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951331&extra=page%3D1&mobile=2
新校区附近寻找初中家教找初中家教﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951299&extra=page%3D1&mobile=2
拼多多技术校招内推﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951283&extra=page%3D1&mobile=2
百度招实习生﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951276&extra=page%3D1&mobile=2
【散金币】西安闻泰电子科技有限公司人力资源2018校园招聘﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951258&extra=page%3D1&mobile=2
拼多多2019届 校招开始啦!﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951250&extra=page%3D1&mobile=2
乐馨托管招作业辅导老师一名﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951246&extra=page%3D1&mobile=2
【找家教】给高一的两个孩子找家教﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951235&extra=page%3D1&mobile=2
「商务运营实习」「网联」「央行、阿里、腾讯、京东入股企业」「北京」﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951189&extra=page%3D1&mobile=2
老校区附近想找份家教工作,初高中数学理综均可﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951184&extra=page%3D1&mobile=2
招女生家教﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951181&extra=page%3D1&mobile=2
招募一名会微信小程序的同学开发一个公众号,报酬丰厚﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951140&extra=page%3D1&mobile=2
【金币】【招兼职老师】短期老师﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951096&extra=page%3D1&mobile=2
【散金币】+家教咯,初三英语、数学、物理、化学﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951023&extra=page%3D1&mobile=2

遇到的问题

之前循环时间,然后触发程序有些鸡肋。进行了新的改动。

while True:
    # itchat.auto_login(hotReload=True)  # 可设置hotReload = True
    jobinfo = ""
    time_now = time.strftime('%H%M',time.localtime(time.time()))
    if int(time_now) == 1000:
        wx('西电招聘信息发布群1', xdjob(jobinfo))
        time.sleep(30)
        wx('西电招聘信息发布群1', rs())
        time.sleep(30)
        wx('西电招聘信息发布群2', xdjob(jobinfo))
        time.sleep(30)
        wx('西电招聘信息发布群2', rs())
        time.sleep(30)
    elif int(time_now) % 10 == 0:
        wx('TEST', time_now)
        time.sleep(60)
    else:
        timer(60)

采用检测本地时间来进行触发。Itchat有个问题不好处理,会时长掉线,查过很多资料好像并不能很好的解决这个问题。所以,为了保证网页版微信的登录状态,每隔十分钟会给一个TEST群里发送信息。这个方法可以保证一段时间的登录状态。但是还是会一段时间后LOG OUT。现在的原因还未能知晓,此bug需要后面解决。

V2.1

是什么驱动要一直去写代码,有一大部分是强迫症!!! 上面招聘信息的链接也太长了吧,在微信里看起来好烦。 所以,缩短的网址,看这里。Python3五行代码实现缩短网址功能 实现的效果:

『睿思校园招聘信息,机器喵自动获取,仅供参考』
客服﹝详细信息﹞:
http://tinyurl.com/y77mdy7q
阿里巴巴数据技术及产品部-校园交流﹝详细信息﹞:
http://tinyurl.com/y7vmoaqr
阿里-菜鸟2018年网络测试开发工程师部门直招﹝详细信息﹞:
http://tinyurl.com/yc9xe4eu
(散金币)百度搜索公司SRE团队2019年校招提前批﹝详细信息﹞:
http://tinyurl.com/y753gupt
错投男儿胎,找个家教兼职都这么难(都要求女生)﹝详细信息﹞:
http://tinyurl.com/y7fdybjh
阿里巴巴菜鸟 测试开发工程师 内推招聘﹝详细信息﹞:
http://tinyurl.com/ybwj6dq8
乐馨托管招聘作业辅导老师一名﹝详细信息﹞:
http://tinyurl.com/y73cuhfv
[散金币]  西安葡萄城信息技术有限公司2019校园招聘﹝详细信息﹞:
http://tinyurl.com/y8w43yap
西安诺瓦科技2019届提前批校招开始啦,与独角兽一起开疆拓土~~~~~﹝详细信息﹞:
http://tinyurl.com/y85atskf
平安租赁招实习生啦﹝详细信息﹞:
http://tinyurl.com/y77fak6z
新校区附近寻找初中家教找初中家教﹝详细信息﹞:
http://tinyurl.com/ya9lxcvw
拼多多技术校招内推﹝详细信息﹞:
http://tinyurl.com/ya2plpp7
百度招实习生﹝详细信息﹞:
http://tinyurl.com/y9bpe4z2
【散金币】西安闻泰电子科技有限公司人力资源2018校园招聘﹝详细信息﹞:
http://tinyurl.com/ybgurcyz
拼多多2019届 校招开始啦!﹝详细信息﹞:
http://tinyurl.com/y94ypr6b
乐馨托管招作业辅导老师一名﹝详细信息﹞:
http://tinyurl.com/yc67fjvp
【找家教】给高一的两个孩子找家教﹝详细信息﹞:
http://tinyurl.com/yc9lldzl
「商务运营实习」「网联」「央行、阿里、腾讯、京东入股企业」「北京」﹝详细信息﹞:
http://tinyurl.com/ycvh4qdc
老校区附近想找份家教工作,初高中数学理综均可﹝详细信息﹞:
http://tinyurl.com/y9tbfxkv
招女生家教﹝详细信息﹞:
http://tinyurl.com/y7u63n68
招募一名会微信小程序的同学开发一个公众号,报酬丰厚﹝详细信息﹞:
http://tinyurl.com/y9c6zwkz
【金币】【招兼职老师】短期老师﹝详细信息﹞:
http://tinyurl.com/ybo7araq
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-06-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 原理
    • 爬虫
      • 微信机器人
      • 最后
      • V1.2
      • V1.3
        • 遇到的问题
        • V1.4
          • 遇到的问题
          • V2.0
            • 增加睿思的招聘信息
              • 遇到的问题
              • V2.1
              相关产品与服务
              云开发 CloudBase
              云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档