[python] boss直聘自动搜索简历聊天HR机器人

前言

这个机器人精确地模仿人们的工作方式,搜索简历,并自动打招呼。

[En]

The robot imitates exactly how people operate, searching resumes and automatically saying hello.

1、首先进行几个关键位置的标定

1)简历的左上角
2)简历的”打招呼”按钮
3)聊天对话框的输入文字框的位置
4)关闭聊天对话框的按钮的位置
5)”下一个”按钮的位置

将上面5个位置定义为P1~P5

校准相关代码:

[En]

Calibrate the related code:

pos1 = Point(0,0)
pos2 = Point(0,0)
pos3 = Point(0,0)
pos4 = Point(0,0)
pos5 = Point(0,0)
def get_key_pos():
    last_time = time.time()
    step = -1

    print("标定开始...")
    while 1 5:
            last_time = time.time()
            if step == -1:
                print("请点击一次简历左上角的空白处,并保持不动")
                step = 0
            elif step == 0:
                pos1.x,pos1.y = m.position()
                print("请点击一次打招呼,并保持不动")
                step = 1
            elif step == 1:
                pos2.x,pos2.y = m.position()
                print("请点击一次文字输入框,并保持不动")
                step = 2
            elif step == 2:
                pos3.x,pos3.y = m.position()
                print("请点击一次关闭对话框,并保持不动")
                step = 3
            elif step == 3:
                pos4.x,pos4.y = m.position()
                print("请点击一次下一个(如果下一个右边有下拉滚动条,则放在下一个的右侧边缘,否则放在左侧边缘),并保持不动")
                step = 4
            elif step == 4:
                pos5.x,pos5.y = m.position()
                print(pos1,pos2,pos3,pos4,pos5)
                return

2、拖拽鼠标复制简历的文字,并进行字符串匹配,对候选人进行人物画像和打分

def people_filter():
    drag(Point(pos1.x,pos1.y),Point(pos1.x,1000),2,0)
    drag(Point(pos1.x,1000),Point(935,655),1)

    k.press_key(k.control_key)
    k.tap_key('c')
    time.sleep(1)
    k.release_key(k.control_key)

    m.move(1334, 461)
    m.scroll(10)

    text = pyperclip.paste()
    ret = text.find("看过Ta的人还联系了")   #推荐信息给过滤掉
    if ret != -1:
        text = text[:ret]
        #print(text)

    #print("分析:",text)

    value = int(0)
    richness = text.count("\n") #根据多少行判断是否丰富
    print(">>> 候选人,人物画像: ")
    print("> 简历丰富度(多少行):",richness)
    if richness > 35:
        print("> 简历:丰富")
        value = value + 5
    else:
        print("> 简历:不丰富")

    if text.find("本科") != -1:
        print("> 本科:YES")
    else:
        print("> 本科:NO")

    #...省略很多关键词匹配的代码

    print("> 总分:", value)

    if value < 10:
        return 0
    else:
        return 1

这里用了 PyMouse、PyKeyboard(用python操作鼠标和键盘)模块,其中drag函数实现从Point1拖拽到Point2,最后一个参数为0表示拖拽完毕不松手,为1表示拖拽完毕松手。因此:

  • people_filter 函数的前两行实现的功能是: 从简历的左上角向下拖拽到屏幕外(实现全选),然后再从屏幕外拖拽到简历的右下角
  • 接下来 4 行利用 PyKeyboard 发送 ctrl+c 的命令,进行复制
  • 接下来从剪切板中取出刚刚复制的内容 text = pyperclip.paste()
  • 最后,关键字匹配
    [En]

    finally, keyword matching*

3、筛选、聊天、下一个全流程状态机

m = PyMouse()k = PyKeyboard()def hr_start():    get_key_pos()    last_time = time.time()    step = -1    while 1 2:            if step == -1:                if people_filter() == 1:                    step = 0                else:                    step = 4            elif step == 0:                m.click(pos2.x, pos2.y, 1)                step = 1                print("沟通")            elif step == 1:                m.click(pos2.x, pos2.y, 1)                step = 2                pyperclip.copy("您好~方便简历发过来吗?")                print("打开沟通对话框")            elif step == 2:                m.click(pos3.x, pos3.y , 1)                k.press_key(k.control_key)                k.tap_key('v')                time.sleep(1)                k.release_key(k.control_key)                k.tap_key(k.enter_key)                step = 3                print("输入一句话")            elif step == 3:                m.click(pos4.x, pos4.y, 1)      #取整除 - 向下取接近除数的整数                step = 4                print("关闭沟通")            elif step == 4:                #m.click(pos5.x, pos5.y, 1)                #可以不用点击下一个,而用快捷按钮:CTRL+右                #https://cloud.tencent.com/developer/article/1406355                k.press_key(k.control_key)                k.tap_key('Right')                time.sleep(1)                k.release_key(k.control_key)                time.sleep(1)                step = -1                print("下一个")            #print("time=",t)            last_time = time.time()

逻辑很简单:如果被筛选的人符合标准,就进行沟通,要求提供简历,如果不符合,就转到下一个。

[En]

The logic is simple: if the screened person meets the criteria, communicate, ask for a resume, and if not, move on to the next one.

附录

1.完整代码(GITHUB) https://github.com/oldprogram/boss_hr_robot
2. [python] PyMouse、PyKeyboard用python操作鼠标和键盘
希望这个简单的小 DEMO 能帮助你理解 python 的对鼠标键盘操作的模块~ 千万不要用这种程序去做坏事~

[python] boss直聘自动搜索简历聊天HR机器人

Original: https://www.cnblogs.com/zjutlitao/p/13782277.html
Author: beautifulzzzz
Title: [python] boss直聘自动搜索简历聊天HR机器人

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/7311/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部