playwright + python实现BOSS官网自动投简历功能

在公司闲来无事,写一个自动投简历的脚本,源码如下,可以根据自己的需求进行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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值