在公司闲来无事,写一个自动投简历的脚本,源码如下,可以根据自己的需求进行DIV
import time import re from playwright.sync_api import Playwright, sync_playwright, expect import os import json from loguru import logger cookies_dir = os.getcwd() + '\\cookies\\' def start_chrome(playwright: Playwright): browser = playwright.chromium.launch(headless=False, args=["--disable-blink-features=AutomationControlled"]) context = browser.new_context() return browser,context def load_cookies(context): cookies_file = cookies_dir + 'cookies.json' if os.path.exists(cookies_file): with open(cookies_file, 'r') as f: cookies = json.load(f) context.add_cookies(cookies['cookies']) def login(page): page.goto("https://www.zhipin.com/web/user/?ka=header-login", wait_until='networkidle') for i in range(100): if page.wait_for_selector('//*[text()="首页"]'): logger.info('登录成功') return True page.get_by_role("link", name=" 微信登录/注册").click() logger.info('请扫码登录(5分钟内)') else: time.sleep(3) def save_cookies(context): if not os.path.exists(cookies_dir): os.makedirs(cookies_dir) # 获取cookie cookies = context.cookies() # 保存cookie with open(cookies_dir + 'cookies.json', 'w') as f: json.dump({'cookies': cookies}, f) logger.info('cookie保存成功') def main(playwright: Playwright) -> None: #开启浏览器 browser,context = start_chrome(playwright) #加载cookie load_cookies(context) page = context.new_page() #登录 if login(page): #保存cookie save_cookies(context) #进入页面,进行打招呼,循环120次 for i in range(120): page.get_by_role("link", name="首页").click() time.sleep(2) page.get_by_role("link", name="Java", exact=True).nth(1).click() time.sleep(3) #筛选一下条件为:应届生 page.click('//span[text()="工作经验"]') page.get_by_text("应届生").click() with page.expect_popup() as page1_info: page.click('//a[@class="job-card-left"]') page1 = page1_info.value time.sleep(2) page1.get_by_role("link", name="立即沟通").click() time.sleep(2) page1.get_by_role("textbox", name="请简短描述您的问题").fill("你好可以聊一聊吗") time.sleep(2) page1.click('//div[@class = "send-message"]') page1.locator(".dialog-title > .close").click() time.sleep(2) page1.close() else: logger.debug('登录失败') if __name__ == '__main__': with sync_playwright() as playwright: main(playwright)