[python] boss直聘自动搜索简历聊天HR机器人
前言
该机器人完全仿照人是如何操作的,进行简历搜索和自动打招呼。
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 的对鼠标键盘操作的模块~
- 千万不要用这种程序去做坏事~
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具