在前程无忧上投递简历发现有竞争力分析,免费能看到匹配度评价和综合竞争力分数,能够作投递参考

计算方式php

综合竞争力得分应该越高越好,匹配度评语也应该评价越高越好html

抓取全部职位关键字搜索结果并获取综合竞争力得分和匹配度评语,最后筛选得分评语自动投递合适的简历python

登录获取cookie

from selenium importwebdriverfrom selenium.webdriver.chrome.options importOptions

chrome_options=Options()#chrome_options.add_argument('--headless')

from time importsleepimportrefrom lxml importetreeimportrequestsimportosimportjsondriver= 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 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"}

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

#获取职位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

#获取匹配的信息

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'])

#获取全部职位id

code=[]

for i in get_job():

code=code+get_job_code(i)

#存入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)

python自动投递简历_用python在前程无忧高效投递简历相关推荐

  1. 用python自动办公 百度_用Python自动办公,做职场高手,16章完整版百度云盘

    01.文件 [12.20更新课程代码]用Python自动办公做职场高手.rar [课程代码]从零写Python练手项目:实用脚本.zip [课程代码]四周实现爬虫网站.zip [课程代码]用NumPy ...

  2. python自动汇总表格_用Python自动生成Excel报表

    作者 / 来源:林骥(ID:linjiwx) 01 安装和导入模块 以 Python 中的 openpyxl 模块为例,它能够读取和修改 Excel 文件,如果你还没有安装,可以通过以下命令进行安装: ...

  3. python 自动发微博_用 Python 自动定时发微博

    原标题:用 Python 自动定时发微博 其实小帅b已经挺久没有玩微博了,记得上次玩微博还是为了给周杰伦打榜,不过最近心血来潮,觉得俺的微博账号躺着也是躺着,要不就用 Python 做一个自动定时发微 ...

  4. python自动获取天气_用python获取天气数据,并作定时播报

    原标题:用python获取天气数据,并作定时播报 数据挖掘入门与实战 公众号: datadw 思路 1.调用和风天气的API,获取天气数据 2.用百度语音API,将天气数据合成语音 3.用树莓派每天早 ...

  5. python自动排课表_利用python爬取广西科技大学教务管理信息系统班级课表

    操作环境 python 3.6.1 pycharm 5.0.3 WampServer 3.0.6 windows 8(64位) 特点 1.中途退出程序或者断网之后重连再次运行不会抓取到重复的课程表 2 ...

  6. 如何用python自动改试卷_利用Python和Jinja2自动生成试卷

    一.概述 Jinja2是Python 3下一个被广泛应用的模版引擎,它的设计思想来源于Django的模板引擎,并扩展了其语法和一系列强大的功能.其中最显著的一个是增加了沙箱执行功能和可选的自动转义功能 ...

  7. python自动qq群发_用Python自动办公,做职场高手

    课程目录列表: 01.文件 手机qq邮箱怎么批量发邮件 02.S0 Python基础,从零到代发邮件 显示其他域名一 03.S1 Excel自动化处企业授权函模板理,从此做表不加班 04.[Excel ...

  8. python自动剪视频_用python进行视频剪辑

    一.目标 python,利用moviepy和pydub将一段视频进行区间切割 二.源码 import os from moviepy.video.io.VideoFileClip import Vid ...

  9. python 自动登录网站_用Python实现自动点击和登录网站帐户

    用Python实现起来,很简单,二十行代码以内就可以实现. 比方说,我想自动打开京东会员的网站,输入用户名和密码,点登录,然后点签到. 代码可以这么写: JDSignup.py import time ...

  10. python自动粘贴文字_在python中自动将文件内容复制到剪贴板并粘贴到纯文本文件中...

    我只想用我写的这个小脚本来解析PDF文件中的数据.在 但是,我似乎遇到了python的问题,更具体地说,PyPDF2模块无法从pdf文件中读取文本.打印出来的数据都是模糊的,基本上不可读.然而,当我打 ...

最新文章

  1. 不需要程序员,产品经理也能10分钟打造一个深度学习模型
  2. 阿里原来是这么干的!Spring Boot 五种热部署方式
  3. linux c 调试 strace 诊断 调试程序 异常退出 崩溃
  4. mount查看linux分区大小,Linux磁盘管理----分区格式化挂载fdisk、mkfs、mount
  5. 世界视频编码器大赛结果出炉,腾讯香农编码器跻身世界一流
  6. 2019长安大学ACM校赛网络同步赛 J Binary Number(组合数学+贪心)
  7. 在GridView里使用CheckBox
  8. sklearn之逻辑回归和岭回归
  9. 文件和目录权限/更改所有者和所属组/umask/隐藏权限lsattr/chattr
  10. Node Stream 入门与深入
  11. Springer期刊LaTeX模板的一些问题
  12. TI的C64X系列的DSPLib实现fft
  13. vlan划分-通过物理接口实现vlan通信
  14. 通过Safari浏览器获取iOS设备UDID(设备唯一标识符)
  15. C语言——函数(上)
  16. 【转】密钥管理服务(KMS)
  17. 十一招解决:系统IE部分网页打不开怎么办(转载)
  18. 攻克微服务中的最大难点:用户数据
  19. oracle ora-各种常见java.sql.SQLException归纳
  20. MindMaster-------ERP系统上线计划

热门文章

  1. Android,开源还是封闭?VS 关于 Linux “踢出” Android
  2. NumPy学习笔记前言
  3. [hihoCoder] 区域周长 解题报告
  4. 途客圈见面会-要点总结
  5. 神经网络 深度神经网络,主流的神经网络的框架
  6. 在SLED 10下ADSL的配置方法
  7. 单机版swarm安装
  8. linux kernel -- oops场景奈何桥
  9. 回溯法经典算法 求集合中所有的子集
  10. 二进制(Binary)——八进制(Octal)