自己动手打造工具系列之自动刷新简历

话说搞安然的大年夜佬们都异常忙,自己在一步一步生长中无暇顾及其他啰唆的工作,比如让猎头留意到各位大年夜佬。若何让猎头和大年夜厂留意到自己呢?第一、前进自己在全部行业的曝光度;第二、准时刷新自己的简历;还有第三,第四等等,各位发挥脑洞。针对第一点,很多大年夜佬各有自己的法子,然则针对第二点着实我们有全自动化的办理规划,可以为自己相对地节约点光阴。小弟本日就带来自己着手打造对象系列之自动刷新简历。本文主如果针对爱好写对象的童鞋供给一些思路,并一步一步地阐发思路和措施,起一个抛砖引玉的感化吧。

0×01 措施及步骤

道理

本对象主如果应用selenium来操作浏览器,实现元素定位、按钮点击和url哀求,然后经由过程点击成功后页面信息的变更判断和截图判断的要领来确定是否成功刷新简历。别的本文只操作了猎聘网和智联招聘网站,由于自己用到这两个网站对照多,很多好时机都是从这两个网站得到的。其他招聘网站还请各位自行钻研。比如若何识别验证码等。

开拓情况

开拓说话:Python 3.6.5 (也存在Java版的)

所用模块:

selenium 3.11.0 (自动化测试模块)

argparse

sys

time.sleep

系统情况:MacOS Sierra

IDE: Pycharm

0×02 步骤解析

开始之前,必要下载相关的组件。主要包括种种浏览器的驱动(Webdriver),这样我们才可以操作浏览器来完成自动刷新简历的事情。以下是主流浏览器的驱动下载地址:

Firefox: https://github.com/mozilla/geckodriver/releases/(本文主要以操作Firefox为主来解说)

其他WebDriver下载地址:https://www.seleniumhq.org/download/

假如应用macOS, 直接应用brew install geckodriver 即可。

步骤一、创建Python虚拟情况

假如应用的是Pycharm的话,在选择建立项目的时刻可以选择创建虚拟情况。同时,也可以自己建立虚拟情况。选择其一即可。建立虚拟情况的措施请参考官方文档。虚拟情况搭建好今后应用如下敕令安装模块:

pip install selenium

等待安装完成后,即可开始对象编写之旅。

步骤二、导入模块

本文主要应用以下模块的措施:

from selenium.webdriver import Firefoxfrom selenium.webdriver.firefox.options import Optionsfrom selenium.webdriver.common.keys import Keysimport argparseimport sysfrom time import sleep

Options主如果来已无GUI要领启动浏览器,避免忽然跳个浏览器出来吓自己一跳。

步骤三、代码编写

首先定义一个类,所谓面向工具编程嘛。现在很火,耳熟能详 ~ ~其次初始化参数和一些变量。代码如下:

class AutoJobHunter:def __init__(self, username, password):# 登岸网站所必要的用户名和密码self.username = usernameself.password = password# 必要自动刷新简历的网站self.zp_url = ‘https://www.zhaopin.com’self.lp_url = ‘https://m.liepin.com/login/?url=https://m.liepin.com/cq/’

代码初始化了用户名和密码,而且定义了必要进行自动刷新简历的网站。后面的措施中会用到这些参数和变量。有盆友会问,为什么是m.liepin.com而不是www.leipin.com呢?后面会逐一解释。

然后我们必要操作两个网站的简历自动刷新,那我们来定义两个措施吧,我真的想称之为函数。C/C++中毒太深!两个措施我取了个拼音,好low有没有!zhaopin() and liepin()。这个两个措施的内容大年夜同小异,由于每个网站的布局不一样,以是造成了必要设定两个措施。以zhaopin()这个措施来解说。

def zhaopin(self):try:#实例化Options,为启动无GUI界面做筹备options = Options()#添加无GUI模式启动浏览器选项options.add_argument(‘-headless’)#实例化工具driver = Firefox(firefox_options=options)#应用webdriver哀求urldriver.get(self.zp_url)#定位元素,输入用户名和密码,然落后行提交操作driver.find_element_by_name(‘loginname’).send_keys(self.username)driver.find_element_by_name(‘Password’).send_keys(self.password)driver.find_element_by_tag_name(‘button’).submit()sleep(3)#定位元素,点击”刷新简历”driver.find_element_by_css_selector(“a.zp-pfme-funcs-link:nth-child(2) > div:nth-child(3)”).click()#获取页面变更部分,由于该位置会变更成”刷新成功”t = driver.find_element_by_css_selector(“a.zp-pfme-funcs-link:nth-child(2) > p:nth-child(2)”).textif “刷新成功” in t:print(“智联招聘简历刷新成功!\n”)driver.close()except Exception as e:print(“呈现非常,法度榜样将退出!\n”)print(“详细差错信息如下:\n”, e)sys.exit(1)

[1] [2]下一页

由于我们必要无GUI模式启动浏览器,以是Options必弗成少,在此中加入‘headless’ 参数后便可以悄无声音地刷新简历,这样老板就不会看到我们在看其他时机啦。哈哈。在注释里已经说得相对明白了。着实主要在于若何去定位元素,然后操作元素。Selenium供给了8种定位元素的措施,大年夜家有兴趣可以辞官网看看。我们用得最多的照样.find_element_by_name、.find_element_by_tag_name 和 .find_element_by_class_selector。当然其他定位元素的措施只要能实现的都没问题,看自己喜爱。

我们应用浏览器打开zhaopin.com, 按下F12打开开拓者对象, 随后点击最左边的“拔取一个元素按钮”,然后移动到用户名和密码输入框处便可以获取name,Class等信息。如图所示:

着末应用.find_element_by_name 和 .find_element_by_tag来定位操作元素,由于该页面只有一个button标签,以是就应用tag name即可定位:

#定位元素,输入用户名和密码,然落后行提交操作driver.find_element_by_name(‘loginname’).send_keys(self.username)driver.find_element_by_name(‘Password’).send_keys(self.password)driver.find_element_by_tag_name(‘button’).submit()

此中sleep(3),主如果点击后页面可能还未加载。以是等待页面加载完后再进行其他操作。然后我们进入登岸后的页面去查找我们想要获得的自动刷新简历的功能。找到元素,右键“复制”->”CSS选择器”即可复制位置。

#定位元素,点击”刷新简历”driver.find_element_by_css_selector(“a.zp-pfme-funcs-link:nth-child(2) > div:nth-child(3)”).click()#获取页面变更部分,由于该位置会变更成”刷新成功”t = driver.find_element_by_css_selector(“a.zp-pfme-funcs-link:nth-child(2) > p:nth-child(2)”).text

而我们定义的t主如果来获取翰墨变更后状态,由于该网站简历刷新后翰墨会变成“刷新成功”。以此我们可以来判断是否刷新成功。着末关闭driver,必然得关闭,不然Firefox可能还在后台运行。

#判断简历是否刷新成功

t = driver.find_element_by_css_selector(“a.zp-pfme-funcs-link:nth-child(2) > p:nth-child(2)”).textif “刷新成功” in t:print(“智联招聘简历刷新成功!\n”)driver.close()

着末,liepin.com的操作要领大年夜同小异,主如果在于www.liepin.com有反爬策略。对新手来说太友好。以是我选择了m.liepin.com来操作。不知道发了这篇文章后会不会加强m.liepin.com的反爬策略。哈哈!以是跟做安然一样,此路不通的时刻,可以另辟途径。思路抉择前途!代码如下:

def liepin(self):try:options = Options()options.add_argument(‘-headless’)driver = Firefox(firefox_options=options)driver.get(self.lp_url)driver.find_element_by_name(‘user_login’).send_keys(self.username)driver.find_element_by_css_selector(‘div.inputzone:nth-child(3) > input:nth-child(2)’).send_keys(self.password)driver.find_element_by_css_selector(‘.btn’).click()sleep(3)link = driver.find_element_by_css_selector(‘div.liepin-channel-list:nth-child(8) > div:nth-child(4) > a:nth-child(1)’).get_attribute(‘href’)driver.get(link)driver.find_element_by_css_selector(‘a.btn:nth-child(2)’).click()if driver.get_screenshot_as_file(“success.png”):print(‘猎聘网简历刷新成功!\n’)driver.close()except Exception as e:print(“呈现非常,法度榜样将退出!\n”)print(“详细差错如下:\n”, e)sys.exit(1)

0×04 总结

对付Selenium这个包来说,有很多用途,比如扫描对象可以应用它来进行隐隐测试。此文主如果轻细浅近的阐明下此模块的基础用法。照样那句话思路抉择前途,idea是最宝贵的器械。大年夜家多想多写,必然能成为安然界的大年夜佬。

别的必要JAVA版的童鞋请私信我,感谢!预报一下,下一次还有若何打造本地安然破绽和安然对象的常识库的文章哦!迎接关注自己着手打造对象系列文章! 迎接关注Github: https://github.com/Hell0W0rld0。感谢各位!着末附上完备代码:

# -*- coding: utf-8 -*-# Created by Allenfrom selenium.webdriver import Firefoxfrom selenium.webdriver.firefox.options import Optionsfrom selenium.webdriver.common.keys import Keysimport argparseimport sysfrom time import sleepclass AutoJobHunter:def __init__(self, username, password):# 登岸网站所必要的用户名和密码self.username = usernameself.password = password# 必要自动刷新简历的网站self.zp_url = ‘https://www.zhaopin.com’self.lp_url = ‘https://m.liepin.com/login/?url=https://m.liepin.com/cq/’def zhaopin(self):try:#实例化Options,为启动无GUI界面做筹备options = Options()#添加无GUI模式启动浏览器选项options.add_argument(‘-headless’)#实例化工具driver = Firefox(firefox_options=options)#应用webdriver哀求urldriver.get(self.zp_url)#定位元素,输入用户名和密码,然落后行提交操作driver.find_element_by_name(‘loginname’).send_keys(self.username)driver.find_element_by_name(‘Password’).send_keys(self.password)driver.find_element_by_tag_name(‘button’).submit()sleep(3)#定位元素,点击”刷新简历”driver.find_element_by_css_selector(“a.zp-pfme-funcs-link:nth-child(2) > div:nth-child(3)”).click()#获取页面变更部分,由于该位置会变更成”刷新成功”t = driver.find_element_by_css_selector(“a.zp-pfme-funcs-link:nth-child(2) > p:nth-child(2)”).textif “刷新成功” in t:print(“智联招聘简历刷新成功!\n”)driver.close()except Exception as e:print(“呈现非常,法度榜样将退出!\n”)print(“详细差错信息如下:\n”, e)sys.exit(1)def liepin(self):try:options = Options()options.add_argument(‘-headless’)driver = Firefox(firefox_options=options)driver.get(self.lp_url)driver.find_element_by_name(‘user_login’).send_keys(self.username)driver.find_element_by_css_selector(‘div.inputzone:nth-child(3) > input:nth-child(2)’).send_keys(self.password)driver.find_element_by_css_selector(‘.btn’).click()sleep(3)link = driver.find_element_by_css_selector(‘div.liepin-channel-list:nth-child(8) > div:nth-child(4) > a:nth-child(1)’).get_attribute(‘href’)driver.get(link)driver.find_element_by_css_selector(‘a.btn:nth-child(2)’).click()if driver.get_screenshot_as_file(“success.png”):print(‘猎聘网简历刷新成功!\n’)driver.close()except Exception as e:print(“呈现非常,法度榜样将退出!\n”)print(“详细差错如下:\n”, e)sys.exit(1)if __name__ == ‘__main__’:parser = argparse.ArgumentParser(description=”自动刷新简历法度榜样”)parser.add_argument(‘-u’, ‘–username’, help=’Please input your username’)parser.add_argument(‘-p’, ‘–password’, help=”Please input your password”)args = parser.parse_args()username = args.usernamepassword = args.passwordif username and password:aj = AutoJobHunter(username, password)aj.liepin()aj.zhaopin()else:print(parser.usage)

上一页[1] [2]

赞(0) 打赏
分享到: 更多 (0)
免责申明:本站所有资料均来自于网络,版权归原创者所有!本站不提供任何保证,不保证真实性,并不承担任何法律责任

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

阿里云优惠网 更专业 更优惠

阿里云优惠券阿里云大礼包