ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

5分钟搞懂boss直聘怎么招人:附完整示例

5分钟搞懂boss直聘怎么招人:附完整示例 5分钟搞懂boss直聘怎么招人:附完整示例 看了一堆教程还是不会写项目?别急,今天用 boss直聘怎么招人 这个场景,给你一套能直接跑的 完整示例。 项目目标:从手动到自动的跨越 很多开发者卡在“想法”和“落地”之间。比如你想做一个招聘助手,核心需求就两个:批量打招呼 和 消息自动回复。但手动操作太累,效率低。 我们搭建一个 Python 脚本,模拟真人行为,实现:自动筛选简历:根据关键词(如“Java”、“3年经验”)过滤。 批量打招呼:向符合条件的候选人发送预设消息。 数据记录:将操作结果存入 Excel,方便后续跟进。注意:所有操作必须遵守平台规则,避免封号。本示例仅用于学习自动化逻辑,实际使用请谨慎。目录结构:清晰的文件组织 项目结构如下,简单明了,便于维护: recruitment_bot/ ├── config.py # 配置文件(账号、关键词、消息模板) ├── main.py # 主程序入口 ├── browser_utils.py # 浏览器自动化工具函数 ├── message_templates.py # 消息模板库 ├── data_processor.py # 数据处理与Excel导出 └── requirements.txt # 依赖库关键文件说明:config.py:集中管理敏感信息(如账号密码)和业务参数(如打招呼频率)。 browser_utils.py:封装 Selenium 操作,实现页面定位、点击、输入等基础功能。 data_processor.py:负责将候选人信息结构化,并写入 Excel。核心代码实现:逐行讲解关键逻辑 1. 配置文件(config.py) # config.py ACCOUNT = {username: your_boss_account, # 替换为实际账号password: your_password # 建议通过环境变量加载,避免硬编码 }KEYWORDS = [Java, 后端, 3年经验] # 筛选简历的关键词 MESSAGE_TEMPLATE = 您好,我对您的简历很感兴趣,方便聊聊吗? # 打招呼消息 INTERVAL_SECONDS = 5 # 每次操作间隔时间(秒),模拟真人 MAX_CANDIDATES = 20 # 每次最多处理20人2. 浏览器自动化(browser_utils.py) # browser_utils.py from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import time from config import ACCOUNT, INTERVAL_SECONDSdef init_driver():初始化浏览器驱动options = webdriver.ChromeOptions()options.add_argument(--start-maximized)options.add_argument(--disable-blink-features=AutomationControlled) # 隐藏自动化特征driver = webdriver.Chrome(options=options)driver.set_page_load_timeout(30)return driverdef login(driver):登录boss直聘driver.get(https://login.zhipin.com/)time.sleep(2)# 输入账号username_input = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, input-account)))username_input.send_keys(ACCOUNT[username])# 输入密码password_input = driver.find_element(By.ID, input-password)password_input.send_keys(ACCOUNT[password])# 点击登录按钮login_button = driver.find_element(By.CSS_SELECTOR, button[data-dp-btn='login'])login_button.click()print(登录成功,等待跳转...)time.sleep(5) # 等待页面完全加载def search_candidates(driver, keywords):根据关键词搜索候选人driver.get(https://www.zhipin.com/web/chat/index)time.sleep(3)candidates = []for keyword in keywords:# 切换搜索框,输入关键词search_box = driver.find_element(By.CSS_SELECTOR, input[placeholder*='搜索'])search_box.clear()search_box.send_keys(keyword)search_box.send_keys(\n) # 模拟回车time.sleep(2)# 获取候选人列表candidate_cards = driver.find_elements(By.CSS_SELECTOR, .geek-card)for card in candidate_cards[:10]: # 每次只取前10个,避免过载try:name = card.find_element(By.CSS_SELECTOR, .geek-name).texttitle = card.find_element(By.CSS_SELECTOR, .geek-job).textcandidates.append({name: name, title: title, keyword: keyword})except:continuetime.sleep(INTERVAL_SECONDS) # 间隔操作,降低风险return candidates3. 消息发送与数据处理(main.py + data_processor.py) # data_processor.py import pandas as pd from datetime import datetimedef save_to_excel(candidates, filename=recruitment_log.xlsx):将候选人数据保存到Exceldf = pd.DataFrame(candidates)df[timestamp] = datetime.now().strftime(%Y-%m-%d %H:%M:%S)df.to_excel(filename, index=False)print(f数据已保存至 {filename})# main.py import time from browser_utils import init_driver, login, search_candidates from data_processor import save_to_excel from config import MESSAGE_TEMPLATE, MAX_CANDIDATES, INTERVAL_SECONDS from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as ECdef send_message(driver, candidate):向单个候选人发送消息try:# 点击候选人卡片,进入聊天窗口driver.find_element(By.XPATH, f//*[text()='{candidate['name']}']).click()time.sleep(1)# 定位输入框并发送消息chat_input = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, .chat-input)))chat_input.send_keys(MESSAGE_TEMPLATE)chat_input.send_keys(\n)print(f已向 {candidate['name']} 发送消息)time.sleep(INTERVAL_SECONDS)except Exception as e:print(f发送失败: {e})def main():driver = init_driver()try:login(driver)candidates = search_candidates(driver, [Java, 后端])print(f共找到 {len(candidates)} 位候选人)# 限制每次处理数量for candidate in candidates[:MAX_CANDIDATES]:send_message(driver, candidate)save_to_excel(candidates)finally:driver.quit()if __name__ == __main__:main()运行与测试:确保代码稳定可用 1. 环境准备 # 安装依赖 pip install -r requirements.txtrequirements.txt 内容: selenium==4.15.0 pandas==2.1.4 webdriver-manager==4.0.12. 本地测试步骤手动登录验证:先手动运行 init_driver() 和 login(),确认账号能正常登录。 小规模测试:将 MAX_CANDIDATES 改为 3,观察是否成功发送消息。 检查日志:查看控制台输出,确认“发送成功”和“数据已保存”信息。避坑提示:IP 封禁:建议使用代理 IP,避免同一 IP 频繁操作。 验证码:若触发滑块验证码,需人工干预或使用打码平台(需额外集成)。 页面结构变化:Boss 直聘可能更新前端代码,需定期更新 CSS 选择器。优化扩展:提升效率与安全性 1. 增加重试机制 import randomdef safe_send_message(driver, candidate, retries=3):带重试机制的消息发送for i in range(retries):try:send_message(driver, candidate)return Trueexcept:if i retries - 1:wait_time = random.uniform(2, 5)print(f第{i+1}次失败,{wait_time:.1f}秒后重试...)time.sleep(wait_time)return False2. 数据去重 def deduplicate(candidates):根据姓名去重,避免重复打招呼seen = set()unique_candidates = []for c in candidates:if c[name] not in seen:seen.add(c[name])unique_candidates.append(c)return unique_candidates3. 日志记录 import logginglogging.basicConfig(level=logging.INFO,format=%(asctime)s - %(levelname)s - %(message)s,handlers=[logging.FileHandler(bot.log),logging.StreamHandler()] )在关键步骤添加 logging.info(...),便于排查问题。 小结:从示例到实战的最后一公里 这个 boss直聘怎么招人 的 完整示例 涵盖了从登录、搜索、消息发送到数据记录的全流程。核心在于:模拟真人行为 和 合理控制频率。 关键要点回顾:配置文件分离:敏感信息与业务逻辑解耦,便于维护。 异常处理:每次操作都要考虑失败情况,增加重试和日志。 频率控制:INTERVAL_SECONDS 是关键参数,建议设置在 5-10 秒。 数据持久化:Excel 或数据库记录操作结果,方便后续跟进。下一步建议:将脚本部署到云服务器,使用定时任务(如 Crontab)定期运行。 集成通知功能(如企业微信、钉钉),当有新候选人回复时推送提醒。 学习 Playwright 替代 Selenium,性能更优,支持多浏览器。技术栈没有银弹,关键在于 小步快跑,持续迭代。从这个小项目出发,你可以扩展出更多自动化场景,如简历筛选、面试安排等。 还有什么不懂的?评论区留言挨个回
返回列表