【绝命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

  • 17
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
这段代码是一个用于编码转换的示例,它展示了如何使用Python实现将Unicode数据编码为XML和HTML实体的功能。 让我们逐句解释一下代码: ```python import codecs from htmlentitydefs import codepoint2name ``` 首先,导入了codecs库和codepoint2name模块,后者包含了HTML实体的名称和对应的Unicode码点。 ```python def encode_for_xml(unicode_data, encoding='ascii'): return unicode_data.encode(encoding, 'xmlcharrefreplace') ``` 这是一个名为encode_for_xml的函数,它接受一个Unicode字符串和一个可选的编码参数。它使用给定的编码对Unicode数据进行编码,并将无法编码的字符替换为XML字符引用。 ```python def html_replace(exc): if isinstance(exc, (UnicodeEncodeError, UnicodeTranslateError)): s = [u'&%s;' % codepoint2name[ord(c)] for c in exc.object[exc.start:exc.end]] return ''.join(s), exc.end else: raise TypeError("can't handle %s" % exc.__name__) codecs.register_error('html_replace', html_replace) ``` 这是一个名为html_replace的函数,它是一个错误处理函数。当遇到无法编码的字符时,将调用此函数来处理。它将无法编码的字符替换为对应的HTML实体。 ```python def encode_for_html(unicode_data, encoding='ascii'): return unicode_data.encode(encoding, 'html_replace') ``` 这是另一个编码函数,名为encode_for_html。它与encode_for_xml函数类似,但是使用html_replace函数来处理无法编码的字符。 ```python if __name__ == '__main__': unicode_data = u'\N{LATIN SMALL LETTER A WITH DIAERESIS}' print encode_for_xml(unicode_data, encoding='ascii') data = u''' <html> <head> <title>Encoding Test</title> </head> <body> <p>accented characters: <ur> <li>\xe0 (a + grave) <li>\xe7 (c + cedilla) <li>\xe9 (a + acute) </ul> <p>symbols: <ul> <li>\xa3 (British pound) <li>\u20ac (Euro) <li>\u221e (infinity) </ul> </body></html> ''' print encode_for_xml(data) print encode_for_html(data) ``` 在这个if __name__ == '__main__'的块中,我们定义了一些测试数据并调用了encode_for_xml和encode_for_html函数来进行编码转换。输出将会显示Unicode数据的编码结果。 至于html_replace(exc)函数的参数例子,你可以将其添加到代码中并进行测试。例如: ```python def html_replace(exc): if isinstance(exc, (UnicodeEncodeError, UnicodeTranslateError)): s = [u'&%s;' % codepoint2name[ord(c)] for c in exc.object[exc.start:exc.end]] return ''.join(s), exc.end elif isinstance(exc, UnicodeDecodeError): # 示例参数例子 return u'&%s;' % codepoint2name[ord(exc.object[exc.start])], exc.end else: raise TypeError("can't handle %s" % exc.__name__) ``` 这样,当遇到Unicode解码错误时,将替换为对应的HTML实体。你可以在测试数据中添加一些无法解码的字符来进行测试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值