用python在前程無憂高效投遞簡歷

 在前程無憂上投遞簡歷發現有競爭力分析,免費能看到匹配度評價和綜合競爭力分數,能夠作投遞參考

計算方式php

 綜合競爭力得分應該越高越好,匹配度評語也應該評價越高越好html

抓取全部職位關鍵字搜索結果並獲取綜合競爭力得分和匹配度評語,最後篩選得分評語自動投遞合適的簡歷python

 

登錄獲取cookie

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
# chrome_options.add_argument('--headless')
from time import sleep
import re
from lxml import etree
import requests
import os
import json

driver = webdriver.Chrome(chrome_options=chrome_options,executable_path = 'D:\python\chromedriver.exe')
headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"}

def get_cookie():
driver.get("https://login.51job.com/login.php?loginway=1&lang=c&url=")
sleep(2)
phone=input("輸入手機號:")
driver.find_element_by_id("loginname").send_keys(phone)
driver.find_element_by_id("btn7").click()
sleep(1)
code=input("輸入短信:")
driver.find_element_by_id("phonecode").send_keys(code)
driver.find_element_by_id("login_btn").click()
sleep(2)
cookies = driver.get_cookies()
with open("cookie.json", "w")as f:
f.write(json.dumps(cookies))
driver.close()

用webdriver登錄獲取cookie,把cookie寫入文件,在登錄的時候最好不用無頭模式,偶爾有滑動驗證碼web

前程無憂手機短信一天只能發送三條,保存cookie下次登錄用chrome

#搜索職位並得到頁碼
def get_job():
job = input("輸入職位:")
url=f"https://search.51job.com/list/020000,000000,0000,00,1,99,{job},2,1.html?lang=c&stype=1&postchannel=0000&workyear=02&cotype=99&degreefrom=99&jobterm=99&companysize=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=5&dibiaoid=0&address=&line=&specialarea=00&from=&welfare="
r=session.get(url,headers=headers)
r.encoding=r.apparent_encoding
tree = etree.HTML(r.text)
x = tree.xpath('//span[@class="td"]/text()')[0]
total_page = int(re.findall("(\d+)", x)[0])
href = []
for i in range(1,total_page+1):
href.append(re.sub("\d.html", f'{i}.html', url))
return href

 

 

 

 

在職位搜索獲取職位搜索結果的所有頁碼json

 

 

 

#獲取職位id
def get_job_code(url):
headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"}
r=session.get(url,headers=headers)
tree=etree.HTML(r.text)
divs=tree.xpath('//div[@class="el"]/p/span/a/@href')
job=str(divs)
job_id=re.findall("\/(\d+).html",job)
return job_id

獲取職位idcookie

修改id請求網址到競爭力分析頁面session

#獲取匹配的信息
def get_info(job_id):
href=f"https://i.51job.com/userset/bounce_window_redirect.php?jobid={job_id}&redirect_type=2"
r=session.get(href,headers=headers)
r.encoding=r.apparent_encoding
tree=etree.HTML(r.text)
pingjia=tree.xpath('//div[@class="warn w1"]//text()')[0].strip()
gongsi=[]
for i in tree.xpath('//div[@class="lf"]//text()'):
if i.strip():
gongsi.append(i.strip())
fenshu=[]
for i in tree.xpath('//ul[@class="rt"]//text()'):
if i.strip():
fenshu.append(i.strip())
url=f"https://jobs.51job.com/shanghai/{job_id}.html?s=03&t=0"
return {"公司":gongsi[1],"職位":gongsi[0],"匹配度":pingjia,fenshu[3]:fenshu[2],"連接":url,"_id":job_id}

抓取競爭力分析頁面,返回一個字典app

 

主程序less

#用cookie登錄
if not os.path.exists("cookie.json"):
get_cookie()
f=open("cookie.json","r")
cookies=json.loads(f.read())
f.close()
session = requests.Session()
for cookie in cookies:
session.cookies.set(cookie['name'], cookie['value'])

檢查cookie文件載入cookie,不存在執行get_cookie()把cookie保存到文件

#獲取全部職位id
code=[]
for i in get_job():
code=code+get_job_code(i)

獲取的職位id添加到列表

 #存入Mongodb
import pymongo
client=pymongo.MongoClient("47.102.109.190",27017)
db=client["job_zhu"]
job_info=db["job_info"]
for i in code:
try:
if not job_info.find_one({"_id":i}):
info=get_info(i)
if not job_info.find_one(info):
job_info.insert_one(info)
print(info)
print("插入成功")
except:
print(code)

龜速爬取,用MongDB保存結果,職位id做爲索引id,插入以前檢查id是否存在簡單去重減小訪問

吃完飯已經抓到8000個職位了,篩選找到127個匹配度好的,開始批量投遞

登錄狀態點擊申請職位,用wevdriver作

for i in job_info.find({"匹配度":{$regex:"排名很好"},"綜合競爭力得分":{$gte:"80"}}):
    print(i)
    try:
        driver.get(i)
        driver.find_element_by_id("app_ck").click()
        sleep(2)
    except:
        pass

用cookie登錄簡單for循環投遞,在Mongodb裏查表,正則篩選匹配度和競爭力得分獲取全部匹配結果

 

投遞成功

代碼

 

from selenium import webdriverfrom selenium.webdriver.chrome.options import Optionschrome_options = Options()chrome_options.add_argument('--headless')from time import sleepimport refrom lxml import etreeimport requestsimport osimport jsondriver = webdriver.Chrome(chrome_options=chrome_options,executable_path = 'D:\python\chromedriver.exe')headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"}driver.get("https://search.51job.com/list/020000,000000,0000,00,1,99,%2B,2,1.html?lang=c&stype=1&postchannel=0000&workyear=01%2C02&cotype=99&degreefrom=03%2C04&jobterm=99&companysize=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=5&dibiaoid=0&address=&line=&specialarea=00&from=&welfare=")#用webdriver獲取cookie寫入文件def get_cookie():    driver.get("https://login.51job.com/login.php?loginway=1&lang=c&url=")    sleep(2)    phone=input("輸入手機號:")    driver.find_element_by_id("loginname").send_keys(phone)    driver.find_element_by_id("btn7").click()    sleep(1)    code=input("輸入短信:")    driver.find_element_by_id("phonecode").send_keys(code)    driver.find_element_by_id("login_btn").click()    sleep(2)    cookies = driver.get_cookies()    with open("cookie.json", "w")as f:        f.write(json.dumps(cookies))    driver.close()#搜索職位並得到頁碼def get_job():    job = input("輸入職位:")    url=f"https://search.51job.com/list/020000,000000,0000,00,1,99,{job},2,1.html?lang=c&stype=1&postchannel=0000&workyear=02&cotype=99&degreefrom=99&jobterm=99&companysize=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=5&dibiaoid=0&address=&line=&specialarea=00&from=&welfare="    r=session.get(url,headers=headers)    r.encoding=r.apparent_encoding    tree = etree.HTML(r.text)    x = tree.xpath('//span[@class="td"]/text()')[0]    total_page = int(re.findall("(\d+)", x)[0])    href = []    for i in range(1,total_page+1):        href.append(re.sub("\d.html", f'{i}.html', url))    return href#獲取職位iddef get_job_code(url):    headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"}    r=session.get(url,headers=headers)    tree=etree.HTML(r.text)    divs=tree.xpath('//div[@class="el"]/p/span/a/@href')    job=str(divs)    job_id=re.findall("\/(\d+).html",job)    return job_id#獲取匹配的信息def get_info(job_id):    href=f"https://i.51job.com/userset/bounce_window_redirect.php?jobid={job_id}&redirect_type=2"    r=session.get(href,headers=headers)    r.encoding=r.apparent_encoding    tree=etree.HTML(r.text)    pingjia=tree.xpath('//div[@class="warn w1"]//text()')[0].strip()    gongsi=[]    for i in tree.xpath('//div[@class="lf"]//text()'):        if i.strip():            gongsi.append(i.strip())    fenshu=[]    for i in tree.xpath('//ul[@class="rt"]//text()'):        if i.strip():            fenshu.append(i.strip())    url=f"https://jobs.51job.com/shanghai/{job_id}.html?s=03&t=0"    return {"公司":gongsi[1],"職位":gongsi[0],"匹配度":pingjia,fenshu[3]:fenshu[2],"連接":url,"_id":job_id}#用cookie登錄if not os.path.exists("cookie.json"):    get_cookie()f=open("cookie.json","r")cookies=json.loads(f.read())f.close()session = requests.Session()for cookie in cookies:    session.cookies.set(cookie['name'], cookie['value'])#獲取全部職位idcode=[]for i in get_job():    code=code+get_job_code(i) #存入Mongodbimport pymongoclient=pymongo.MongoClient("47.102.109.190",27017)db=client["job_zhu"]job_info=db["job_info"]for i in code:    try:        if not job_info.find_one({"_id":i}):            info=get_info(i)            if not job_info.find_one(info):                job_info.insert_one(info)                print(info)                print("插入成功")    except:        print(code)
相關文章
相關標籤/搜索