【绝命Coding助力秋招】Python实现<实习僧>海投脚本

 hello hello~ ,这里是绝命Coding——老白~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹
19d95742d45b4220ad0ae0359ffcba93.png

💥个人主页:绝命Coding-CSDN博客
💥 所属专栏:后端技术分享
这里将会不定期更新有关后端、前端的内容,希望大家多多点赞关注收藏💖

大家实习秋招应该都会投递简历的烦恼吧,海投脚本,就可以省去人力的麻烦,大家每天在选完自己想投的公司后,不妨使用脚本把每天可以沟通次数都投完。海投越多,机会越大。

(Boss海投原理与下面的基本是同样,大家也可以自己动手做个Boss海投脚本)

from selenium import webdriver  
from selenium.webdriver.chrome.service import Service  
import time  
  
from selenium import webdriver  
from webdriver_manager.chrome import ChromeDriverManager  
  
  
# 表示是否为第一次使用,第一次使用选择1会自动下载驱动,否则设为其他  
frequency = 2  
# chromedriver驱动路径,这里自己找到下载的默认位置,改成相应的  
path = r'C:\Users\jueMingCoding\.wdm\drivers\chromedriver\win32\107.0.5304\chromedriver.exe'  
iskeyword = True       # 设置是否进行关键词过滤  
keyword = ["java","后端"]       # 设置必须有该关键词才能进行投递  
  
# 下载驱动  
def downdriver():  
    driver = webdriver.Chrome(ChromeDriverManager().install())  
  
# 检查存在再进行数据的  
def check_find_elements(bro,by,value):  
    # 等待元素加载完毕  
    while (True):  
        try:  
            # 注意.是class name的意思  
            bro.find_element(by, value)  
            #print(value + "找到")  
            break  
        except Exception:  
            continue  
    return bro.find_elements(by, value)  
  
# 检查存在再进行数据的  
def check_find_element(bro,by,value):  
    # 等待元素加载完毕  
    while (True):  
        try:  
            # 注意.是class name的意思  
            bro.find_element(by, value)  
            #print(value + "找到")  
            break  
        except Exception:  
            continue  
    return bro.find_element(by, value)  
  
# 点击按钮进行沟通  
def deal(bro):  
    #print("正在处理")  
    try:  
        cls = bro.window_handles  
        bro.switch_to.window(cls[1])  
        # btn-box resume_apply  
        try:  
            bro.find_element("css selector", "[class='btn-box resume_apply']")  
            print("已经投递过该公司")  
            bro.close()  
            bro.switch_to.window(cls[0])  
            return  
        except Exception as e:  
            #print(e)  
            pass  
        isTD = False        # 是否投递  
        for key in keyword:  
            isTD = isTD or key.lower() in bro.title.lower()  
  
        if( (iskeyword == True and isTD ) or (iskeyword == False) ):  
            chat = check_find_element(bro, "css selector", "[class='btn-box resume_apply com_res']")  
            chat.click()  
            # /html/body/div[5]/div/div[1]/div/span  
  
  
            time.sleep(0.01)  
            #time.sleep(1)  
            # 这里点击img的  
            jl = check_find_element(bro, "xpath", "//img[@src='https://sxsimg.xiaoyuanzhao.com/static/img/deliver-layer/radio-choose.png']")  
            jl.click()  
            try:  
                bro.find_element("xpath", "//img[@aria-label='友情提示']")  
                bro.close()  
                bro.switch_to.window(cls[0])  
                return  
            except Exception as e:  
                pass  
            ok = check_find_element(bro, "css selector", "[class='btn']")  
            ok.click()  
            #time.sleep(1)  
        bro.close()  
        bro.switch_to.window(cls[0])  
    except Exception as e:  
        bro.close()  
        bro.switch_to.window(cls[0])  
        print("qaq",e)  
        return  
  
# 打开页面  
def open():  
    s = Service(path)  
    bro = webdriver.Chrome(service=s)  
    bro.get("https://www.shixiseng.com/")  
    check_find_element(bro, "css selector","[class='nickname']")  
    bro.get("https://www.shixiseng.com/interns?keyword=Java&city=%E5%85%A8%E5%9B%BD&type=intern&from=menu")  
    print("请在20秒内完成搜索或者筛选工作,否则默认在推荐页面进行投递 ~")  
  
    for i in range(20):  
        print("时间还剩"+str(20-i)+"秒……")  
        time.sleep(1)  
    print("开始海投~")  
    #bro.set_window_size(300, 300)  
    #bro.minimize_window()       # 最小化窗口,不影响  
    while(True):  
        #jobs = check_find_elements(bro, "css selector", '.info-primary-wrap')  
        # btn btn-startchat-out        # start-chat-btn        # 推荐页start-chat-btn  
        jobs = check_find_elements(bro, "css selector", "[class='title ellipsis font']")  
        #print(jobs)  
  
        print(jobs)  
        for job in jobs:  
            try:  
                job.click()  
            except Exception as e:  
                print('aa',e)  
                continue  
            #print("qaq")  
  
            deal(bro)  
        #break  
        next_index(bro)  
    time.sleep(100)  
  
# 点击下一页  
def next_index(bro):  
    check_find_element(bro, "css selector", "[class='el-icon el-icon-arrow-right']").click()  
    #check_find_element(bro, "xpath", '//*[@id="container"]/div[2]/div/div[3]/div[3]/div/div/a[10]')  
  
# Press the green button in the gutter to run the script.  
if __name__ == '__main__':  
    print("- 实习僧一键投递脚本启动成功(注意该脚本需要全屏) -")  
    if( frequency == 1 ):  
        print("第一次运行,正在下载驱动 ~ ")  
        downdriver()  
        print("下载成功,请修改frequency变量并重新启动")  
    else:  
        print("正在启动浏览器 ~")  
        open()  
 

 更多历史精彩文章(篇幅过多,不一一列出):

(简历相关)

求职经验分享(1):一份合格的简历应该如何写?-CSDN博客(推荐)

求职经验分享(2):简历如何优化以及如何应对面试【后端篇】-CSDN博客

(项目亮点相关)

大厂面试官赞不绝口的后端技术亮点【后端项目亮点合集(1):Redis篇】-CSDN博客

大厂面试官赞不绝口的后端技术亮点【后端项目亮点合集(2)】-CSDN博客
(八股文)
大厂面试官问我:Redis处理点赞,如果瞬时涌入大量用户点赞(千万级),应当如何进行处理?【后端八股文一:Redis点赞八股文合集】_java中redis如何实现点赞-CSDN博客

大厂面试官问我:布隆过滤器有不能扩容和删除的缺陷,有没有可以替代的数据结构呢?【后端八股文二:布隆过滤器八股文合集】_布隆过滤器不能扩容-CSDN博客

………

(算法篇)
大厂面试:算法考前必看汇总(全)_大厂面试算法题-CSDN博客

 Boss海投脚本也会继续分享,感兴趣的小伙伴可以给个三连~

914cbb12b2c3492aaa31232a11aa9c64.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/799670.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java 实验三:数组操作以及Java中的方法

一、实验目的 1、掌握数组的声明、初始化、查找、排序等的方式; 2、掌握Java中如何定义一个方法,定义好的方法如何进行调用等。 二、实验环境 1、windows11; 2、JDK1.8,集成开发环境Eclipse。 三、实验内容 1、 定义一个函数,获取某个…

Linux系统搭建轻量级个人博客VanBlog并一键发布公网远程访问

文章目录 前言1. Linux本地部署2. VanBlog简单使用3. 安装内网穿透4. 创建公网地址5. 创建固定公网地址 前言 今天和大家分享如何在Linux Ubuntu系统搭建一款轻量级个人博客VanBlog,并结合cpolar内网穿透软件生成公网地址,轻松实现随时随地远程访问本地…

网络配置命令

文章目录 一、查看网络接口信息 ifconfig1.1 网络接口名称1.2 使用 ifconfig 查看网络接口信息1.2.1 输出示例1.2.2 输出解释 1.3 查看特定网络接口信息1.3.1 输出示例 1.4 查看所有网络接口信息1.5 特殊网络接口 二、修改网络配置文件2.1 配置文件示例2.2 使配置生效2.3 关闭 …

JavaScript日期对象倒计时案例

思路&#xff1a;1.先求出当前时间的总毫秒数 2.再求出所需要求的时间的总毫秒数 3.用所求时间的减去当前时间的可得到倒计时剩余时间 4.最后将所求的倒计时剩余时间转换为天&#xff0c;小时&#xff0c;分钟&#xff0c;秒即可 <!DOCTYPE html> <html lang"en…

1.31、基于长短记忆网络(LSTM)的发动机剩余寿命预测(matlab)

1、基于长短记忆网络(LSTM)的发动机剩余寿命预测的原理及流程 基于长短期记忆网络(LSTM)的发动机剩余寿命预测是一种常见的机器学习应用&#xff0c;用于分析和预测发动机或其他设备的剩余可用寿命。下面是LSTM用于发动机剩余寿命预测的原理和流程&#xff1a; 数据收集&#…

可观察性优势:掌握当代编程技术

反馈循环是我们开发人员工作的关键。它们为我们提供信息&#xff0c;并让我们从用户过去和现在的行为中学习。这意味着我们可以根据过去的反应进行主动开发。 TestComplete 是一款自动化UI测试工具&#xff0c;这款工具目前在全球范围内被广泛应用于进行桌面、移动和Web应用的…

C++ 类和对象 赋值运算符重载

前言&#xff1a; 在上文我们知道数据类型分为自定义类型和内置类型&#xff0c;当我想用内置类型比较大小是非常容易的但是在C中成员变量都是在类(自定义类型)里面的&#xff0c;那我想给类比较大小那该怎么办呢&#xff1f;这时候运算符重载就出现了 一 运算符重载概念&…

npm发布的包如何快速在cnpm上使用

npm发布的包如何快速在cnpm上使用 解决方案 前往淘宝npm镜像官网 搜索插件库并点击同步 等待一分钟即可查看最新版本

Nuxt.js 错误侦探:useError 组合函数

title: Nuxt.js 错误侦探&#xff1a;useError 组合函数 date: 2024/7/14 updated: 2024/7/14 author: cmdragon excerpt: 摘要&#xff1a;文章介绍Nuxt.js中的useError组合函数&#xff0c;用于统一处理客户端和服务器端的错误&#xff0c;提供statusCode、statusMessage和…

PostgreSQL修改最大连接数

在使用PostgreSQL 的时候&#xff0c;经常会遇到这样的错误提示&#xff0c; sorry, too many clients already&#xff0c;这是因为默认PostgreSQL最大连接数是 100, 一般情况下&#xff0c;个人使用时足够的&#xff0c;但是在生产环境&#xff0c;这个连接数是远远不够的&am…

内存函数(C语言)

内存函数 以下函数的头文件&#xff1a;string.h 针对内存块进行处理的函数 memcpy 函数原型&#xff1a; void* memcpy(void* destination, const void* source, size_t num);目标空间地址 源空间地址num&#xff0c;被拷贝的字节个数 返回目标空间的起始地…

火星全球彩色影像图介绍(中分辨率相机)

一、数据基本信息 该数据是利用天问一号轨道器中分辨率相机获取的影像经光度校正、几何校正、全球制图等制作而成的全火星地图数据DOM&#xff0c;每个数据包含一个tif数据文件。该影像图分辨率为76米。 任务型号&#xff1a;天问一号 搭载平台&#xff1a;环绕器 数据获…

2.The DispatcherServlet

The DispatcherServlet Spring的Web MVC框架与许多其他Web MVC框架一样&#xff0c;是请求驱动的&#xff0c;围绕一个中央Servlet&#xff08;即DispatcherServlet&#xff09;设计&#xff0c;该Servlet将请求分派给控制器&#xff0c;并提供其他功能以促进Web应用程序的开发…

实现keepalive+Haproxyde 的高可用

需要准备五台实验机 一台客户机&#xff1a;test1 两台&#xff1a;一主一备的实验机&#xff1a;test2 test3 两台真实服务器&#xff1a;nginx1 nginx2 实验 首先在两台实验机上安装Haproxy 安装依赖环境&#xff0c;并将Haproxy的包进行解压处理 yum install -y pcre…

redis redisson(仅供自己参考)

redis 通过setnx实现的分布式锁有问题 如图&#xff1a; 解决的新的工具为&#xff08;闪亮登场&#xff09;&#xff1a;redisson redisson可重入锁的原理 实现语言lua&#xff1a; 加锁实现脚本语言&#xff1a; 释放锁的脚本语言&#xff1a; 加锁的lua -- 首先判断这个锁…

【算法专题】归并排序

1. 排序数组 912. 排序数组 - 力扣&#xff08;LeetCode&#xff09; 今天我们使用归并排序来对数组进行排序&#xff0c;实际上&#xff0c;归并排序和快速排序是有一定相似之处的&#xff0c;都运用了分而治之的思想提升了排序效率。快速排序的实现思路是每次排序把区间划分…

【Linux】进程间通信——命名管道和共享内存

目录 命名管道&#xff08;named pipe&#xff09; 命令行中使用 代码中使用 共享内存&#xff08;shared memory&#xff09; shmget ipcs命令 shmctl shmat/shmdt 简单通信 命名管道&#xff08;named pipe&#xff09; 之前我们说了匿名管道&#xff0c;但是匿名管道…

Spring-Spring、IoC、DI、注解开发

1、Spring是什么 Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器(框架)。 Spring整体架构 Spring优点&#xff1a; Spring属于低侵入设计。IOC将对象之间的依赖关系交给Spring,降低组件之间的耦合&#xff0c;实现各个层之间的解耦&#xff0c;让我们更专注于业务…

【python】基于随机森林和决策树的鸢尾花分类

目录 引言 决策树&#xff08;Decision Tree&#xff09; 随机森林&#xff08;Random Forest&#xff09; 数据集 结果 代码实现 引言 随机森林&#xff08;Random Forest&#xff09;和决策树&#xff08;Decision Tree&#xff09;是两种在机器学习中广泛使用的分类和…

红色文化3D虚拟数字展馆搭建意义深远

在房地产与土地市场的浪潮中&#xff0c;无论是新城规划、乡村振兴&#xff0c;还是商圈建设&#xff0c;借助VR全景制作、虚拟现实和web3d开发技术打造的全链条无缝VR看房新体验。不仅极大提升了带看与成交的转化率&#xff0c;更让购房者足不出户&#xff0c;即可享受身临其境…