一、目的
1.boss每日简历过多,无法做到多个岗位由一人来筛选。
2.boss被动收集候选人投递简历一天上限200封,主动收集通过“求简历”来收集一日不限量。
3.不筛选,仅收集简历操作过于重复,都是点击固定按钮,占用时间,无效率。
二、适用场景
1.简历不由收简历人筛选(或仅需通过年龄、收入、工作时间、学历、期望职位或期望职位地做简单筛选),收上的简历分发给各用人部门,再由他们来做筛选。
2.每日简历过多,超过200封。
三、使用软件
1.Python 3.7.3
2.pycharm(用来编辑Python代码,也可以选择别的)
3.命令提示符(系统自带,【win】键+【R】输入“cmd”)
4.chrome浏览器
四、应用原理
1.利用基于Python语言的selenium3,进行自动化收集简历,类似于自动化测试工作。
2.借鉴书籍《selenium3自动化测试实战-基于Python语言》
五、准备工作
1.环境搭建
第一步,安装Python
第二步,安装selenium3
常用命令
pip install selenium==3.141.0 #安装制定版本号
pip show selenium #查看当前版本信息
pip uninstall selenium #卸载
第三步,安装浏览器(Chrome)驱动
参照 https://blog.csdn.net/colala6688/article/details/126687421
2.boss设置
此前说了这种收集简历方式的应用场景,所以我们应该设置好收集简历的邮箱,并在邮箱里设置规则,比如“测试岗位”直接转发给x主管。或者单独建立不同岗位的收件夹,这要根据实际公司情况而定。
六、编写代码
代码分为几大部分,启用webdriver模块,遍历简历,判断岗位是否符合标准等。
1.前序
import logging
import sys
import time
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait
options = webdriver.ChromeOptions()
options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
chrome_driver = "C:\Program Files\Google\Chrome\Application\chromedriver.exe"
driver = webdriver.Chrome(executable_path=chrome_driver, options=options) # 以上操作为能在已开启页面进行操作
print(driver.title, driver.current_url) # 页面标题\页面地址
2.遍历候选人
由于页面列表中,一页只能呈现出8个人,所以8个人为一循环,8个人完成后会刷新页面。
i = 0
n = 100
while i < n:
print(f"开始进行第{i + 1}/{n}轮测试")
try:
# 判断一下是否有数据,无数据时会显示class=“empty-icon”的元素,加载过程中会显示class="skeleton is-animated"的div
item_list = driver.find_elements_by_css_selector('div[role="listitem"]')
print("count", len(item_list))
if len(item_list) == 0:
try:
# 如果列表为空
driver.find_element_by_class_name("empty-icon")
print("打招呼列表为空,请稍后再试")
sys.exit(0)
except NoSuchElementException:
print("打招呼列表加载中,请耐心等待")
time.sleep(2)
item_list = driver.find_elements_by_css_selector('div[role="listitem"]')
print("count", len(item_list))
for item in item_list[:8]: # 遍历沟通列表的每个牛人,前8个人
item.click() # 执行点击操作
# 如果能够检索到已发送消息且已发送简历请求则继续遍历下一个
WebDriverWait(driver, 10).until(
expected_conditions.presence_of_element_located((By.CLASS_NAME, "chat-message-list")))
chatlist = driver.find_element_by_class_name("chat-message-list")
WebDriverWait(driver, 10).until(
expected_conditions.presence_of_element_located((By.CLASS_NAME, "message-item")))
WebDriverWait(driver, 10).until(
expected_conditions.visibility_of_element_located((By.CSS_SELECTOR, ".value.job")))
valuejob = driver.find_element_by_css_selector(".value.job")
WebDriverWait(driver, 10).until(
expected_conditions.presence_of_element_located((By.CLASS_NAME, "position-name")))
position = driver.find_element_by_class_name("position-name")
不知道为什么没有格式啊!
3.设置每个岗位的判断规则
以测试岗位举例,如果之前沟通过,回打印“已经回复过了”;如果他期望地不是北京,则会打印“求地址非北京”;如果他找的工作不是测试,则会打印“意愿非测试”。在求职者拼命海投情况下,代码能帮忙过滤掉很多人
4.循环结束
5.改写代码
由于每个用人单位所招聘的职位不同,所以要设置不同的规则,去判断,什么样的候选人我们要跟他沟通去收取简历,什么样的人直接跳过不再沟通。
七、运行代码
由于boss在不同浏览器打开时,需要扫码登录,所以我们需要让代码只在新开的网页上进行操作。
此时需要运用到“命令提示符”。
这个步骤也需要做些前序工作,这次先不说啦,下次补上
cd C:\Program Files\Google\Chrome\Application
chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\selenum\AutomationProfile"
运行完成后,会弹出一个新的网页,在网页中的登录boss,后续Python代码将都在此页面运行。
boss中选择沟通“全部”岗位,选择“未读”的沟通记录。
ps.非程序员,全凭自学Python和百度,真的好难呀,如果有不专业的地方,见谅啊!