㊙️教你用python月入三万自动化简历内推,学弟直呼牛逼!!

Posted 明月十四桥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了㊙️教你用python月入三万自动化简历内推,学弟直呼牛逼!!相关的知识,希望对你有一定的参考价值。

最近,小编在处理简历时,发现大量简历需要一个个打开文件,复制姓名、邮箱、电话号码、学历等关键信息,效率特别低且部分文件无法直接复制。于是,小编便写了简历解析处理的脚本,支持文件格式有:doc,docx,pdf。

ps. 上月战绩,内推400+人,内推成功8人,入职5人,收米8000*2+5000*3=31000。

{'感谢您的投递': 331, '简历处理中': 19, '简历初筛': 5, '本轮通过': 6, 'Offer已发放': 1, '进行中': 2, '拒绝Offer': 3, '接受Offer': 5} 

 

一 准备工作

脚本功能:分析简历文本,一键内推

输入:要解析的文件路径

输出:解析的内容,包括不限于姓名、邮箱、电话号码、学历等信息。

环境准备:python 3.6 、mac(下文中doc转docx是mac写法,windows更简单,导入win32的包即可)

需要导入的包

# encoding: utf-8
import os, sys
import docx
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfpage import PDFPage
from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.layout import LAParams
from pdfminer.converter import PDFPageAggregator

二 开始解析

2.1 获取简历文件

def get_files(path):
    res = []
    for i in os.listdir(path):
        # 去掉临时文件
        if os.path.isfile(path+i) and '~$' not in i and '.DS' not in i:
            # 去重 1.doc 和 1.docx
            if (path+i).split(".")[0] not in str(res):
                res.append(path+i)
    return res

2.2 解析PDF

得到res文本后,可以通过正则,匹配出邮箱,手机号,学历等


def pdf_reader(file):
    fp = open(file, "rb")
    # 创建一个与文档相关联的解释器
    parser = PDFParser(fp)
    # PDF文档对象
    doc = PDFDocument(parser)
    # 链接解释器和文档对象
    parser.set_document(doc)
    # doc.set_paeser(parser)
    # 初始化文档
    # doc.initialize("")
    # 创建PDF资源管理器
    resource = PDFResourceManager()
    # 参数分析器
    laparam = LAParams()
    # 创建一个聚合器
    device = PDFPageAggregator(resource, laparams=laparam)
    # 创建PDF页面解释器
    interpreter = PDFPageInterpreter(resource, device)
    # 使用文档对象得到页面集合
    res = ''
    for page in PDFPage.create_pages(doc):
        # 使用页面解释器来读取
        interpreter.process_page(page)
        # 使用聚合器来获取内容
        layout = device.get_result()
        for out in layout:
            if hasattr(out, "get_text"):
                res = res + '' + out.get_text()
    return res

2.3 解析word

        待优化情况:word中如果包含execl,无法解析。

def word_reader(file):
    try:
        # docx 直接读
        if 'docx' in file:
            res = ''
            f = docx.Document(file)
            for para in f.paragraphs:
                res = res + '\\n' +para.text
        else:
            # 先转格式doc>docx
            os.system("textutil -convert docx '%s'"%file)
            word_reader(file+'x')
            res = ''
            f = docx.Document(file+'x')
            for para in f.paragraphs:
                res = res + '\\n' +para.text
        return res
    except:
        # print(file, 'read failed')
        return ''

2.4 完整代码

# encoding: utf-8
import os, sys
import docx
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfpage import PDFPage
from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.layout import LAParams
from pdfminer.converter import PDFPageAggregator


def get_files(path):
    res = []
    for i in os.listdir(path):
        # 去掉临时文件
        if os.path.isfile(path+i) and '~$' not in i and '.DS' not in i:
            # 去重 1.doc 和 1.docx
            if (path+i).split(".")[0] not in str(res):
                res.append(path+i)
    return res


def pdf_reader(file):
    fp = open(file, "rb")
    # 创建一个与文档相关联的解释器
    parser = PDFParser(fp)
    # PDF文档对象
    doc = PDFDocument(parser)
    # 链接解释器和文档对象
    parser.set_document(doc)
    # doc.set_paeser(parser)
    # 初始化文档
    # doc.initialize("")
    # 创建PDF资源管理器
    resource = PDFResourceManager()
    # 参数分析器
    laparam = LAParams()
    # 创建一个聚合器
    device = PDFPageAggregator(resource, laparams=laparam)
    # 创建PDF页面解释器
    interpreter = PDFPageInterpreter(resource, device)
    # 使用文档对象得到页面集合
    res = ''
    for page in PDFPage.create_pages(doc):
        # 使用页面解释器来读取
        interpreter.process_page(page)
        # 使用聚合器来获取内容
        layout = device.get_result()
        for out in layout:
            if hasattr(out, "get_text"):
                res = res + '' + out.get_text()
    return res


def word_reader(file):
    try:
        # docx 直接读
        if 'docx' in file:
            res = ''
            f = docx.Document(file)
            for para in f.paragraphs:
                res = res + '\\n' +para.text
        else:
            # 先转格式doc>docx
            os.system("textutil -convert docx '%s'"%file)
            word_reader(file+'x')
            res = ''
            f = docx.Document(file+'x')
            for para in f.paragraphs:
                res = res + '\\n' +para.text
        return res
    except:
        # print(file, 'read failed')
        return ''


def file_reader(file):
    if 'doc' in file:
        res = word_reader(file)
    elif 'pdf' in file:
        res = pdf_reader(file)
    else:
        res = '不是doc,也不是pdf,文件格式不支持!'
    return res


if __name__ == '__main__':
    path = "/Users/XXXXX/Mine/XXXXX/"
    abs_files = get_files(path)
    print(abs_files)
    for file in abs_files:
        file_text = file_reader(file)
        print(file_text)

三 效果展示

姓名  工龄  电话  学历背景  公司背景  关键标签  邮箱

  


本期实现:任何格式的简历,解析成文本,便于后续筛选优质简历。

下期揭晓:简历分析,推送到最适合的岗位,包括学历背景,稳定性,公司背景,擅长技术组件等。

 

我是桥哥,专注分享互联网黑科技,点赞、收藏不迷路 !!!

 

以上是关于㊙️教你用python月入三万自动化简历内推,学弟直呼牛逼!!的主要内容,如果未能解决你的问题,请参考以下文章

内推学弟进了腾讯,看看他的标杆简历!

❤️python表白神器手把手教你用代码浪漫追求对象!❤️(附完整源码+讲解)

☀️手把手教你用 C# 下载文件的十八般武艺☀️《❤️记得收藏❤️》

❤️ 爆肝三万字《数据仓库体系》轻松拿下字节offer ❤️建议收藏

❤️ 爆肝三万字《数据仓库体系》轻松拿下字节offer ❤️建议收藏

❤️ 6个Python办公黑科技,工作效率提升100倍!HR小姐姐都馋哭了(附代码)❤️