如何用Python编写Boss直聘搜索简历的HR聊天机器人?

摘要:目录前言1、首先进行几个关键位置的标定2、拖拽鼠标复制简历的文字,并进行字符串匹配,对候选人进行人物画像和打分3、筛选、聊天、下一个全流程状态机附录 前言 该机器人完全仿照人是如何操作的,进行简历搜索和自动打招呼。 1、首先进行几个关键位置
目录前言1、首先进行几个关键位置的标定2、拖拽鼠标复制简历的文字,并进行字符串匹配,对候选人进行人物画像和打分3、筛选、聊天、下一个全流程状态机附录 前言 该机器人完全仿照人是如何操作的,进行简历搜索和自动打招呼。 1、首先进行几个关键位置的标定 1)简历的左上角 2)简历的”打招呼“按钮 3)聊天对话框的输入文字框的位置 4)关闭聊天对话框的按钮的位置 5)”下一个“按钮的位置 将上面5个位置定义为P1~P5 标定相关的代码: 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<2: t = time.time() - last_time if t > 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() 最后进行关键词匹配 3、筛选、聊天、下一个全流程状态机 m = PyMouse() k = PyKeyboard() def hr_start(): get_key_pos() last_time = time.time() step = -1 while 1<2: t = time.time() - last_time if t > 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() 逻辑比较简单:如果筛选的人满足条件,则进行沟通,索要简历,如果不行继续下一个 附录 1.完整代码(GITHUB) https://github.com/oldprogram/boss_hr_robot 2.[python] PyMouse、PyKeyboard用python操作鼠标和键盘 : 希望这个简单的小 DEMO 能帮助你理解 python 的对鼠标键盘操作的模块~ 千万不要用这种程序去做坏事~