如何使用Python控制网页来收集简历
- 一、目的
- 二、适用场景
- 三、使用软件
- 四、应用原理
- 五、准备工作
- 六、编写代码
- 七、运行代码
一、目的
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 loggingimport sysimport timefrom selenium import webdriverfrom selenium.common.exceptions import NoSuchElementExceptionfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support import expected_conditionsfrom selenium.webdriver.support.wait import WebDriverWaitoptions = webdriver.ChromeOptions()options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")chrome_driver = "C:Program FilesGoogleChromeApplicationchromedriver.exe"driver = webdriver.Chrome(executable_path=chrome_driver, options=options) # 以上操作为能在已开启页面进行操作print(driver.title, driver.current_url) # 页面标题页面地址
2.遍历候选人
由于页面列表中,一页只能呈现出8个人,所以8个人为一循环,8个人完成后会刷新页面。
i = 0n = 100while i < n:print(f"开始进行第{i + 1}/{n}轮测试")try:# 判断一下是否有数据,无数据时会显示class=“empty-icon”的元素,加载过程中会显示的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 FilesGoogleChromeApplicationchrome.exe --remote-debugging-port=9222 --user-data-dir="C:selenumAutomationProfile"运行完成后,会弹出一个新的网页,在网页中的登录boss,后续Python代码将都在此页面运行。
boss中选择沟通“全部”岗位,选择“未读”的沟通记录。
ps.非程序员,全凭自学Python和百度,真的好难呀,如果有不专业的地方,见谅啊!