【教你用python挣零花钱】自动化简历内推,学弟直呼牛逼!!

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 【教你用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)


三 效果展示


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


000000000000000.png


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

相关文章
|
1月前
|
搜索推荐 Python
使用Python自动化生成物业通知单
本文介绍如何使用Python结合Pandas和python-docx库自动化生成物业通知单。通过读取Excel数据并填充至Word模板,实现高效准确的通知单批量制作。包括环境准备、代码解析及效果展示,适用于物业管理场景。
67 14
|
1月前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
136 10
|
15天前
|
Python
自动化微信朋友圈:Python脚本实现自动发布动态
本文介绍如何使用Python脚本自动化发布微信朋友圈动态,节省手动输入的时间。主要依赖`pyautogui`、`time`、`pyperclip`等库,通过模拟鼠标和键盘操作实现自动发布。代码涵盖打开微信、定位朋友圈、准备输入框、模拟打字等功能。虽然该方法能提高效率,但需注意可能违反微信使用条款,存在风险。定期更新脚本以适应微信界面变化也很重要。
124 61
|
2月前
|
数据采集 监控 数据挖掘
Python自动化脚本:高效办公新助手###
本文将带你走进Python自动化脚本的奇妙世界,探索其在提升办公效率中的强大潜力。随着信息技术的飞速发展,重复性工作逐渐被自动化工具取代。Python作为一门简洁而强大的编程语言,凭借其丰富的库支持和易学易用的特点,成为编写自动化脚本的首选。无论是数据处理、文件管理还是网页爬虫,Python都能游刃有余地完成任务,极大地减轻了人工操作的负担。接下来,让我们一起领略Python自动化脚本的魅力,开启高效办公的新篇章。 ###
|
7天前
|
存储 安全 数据可视化
用Python实现简单的任务自动化
本文介绍如何使用Python实现任务自动化,提高效率和准确性。通过三个实用案例展示:1. 使用`smtplib`和`schedule`库自动发送邮件提醒;2. 利用`shutil`和`os`库自动备份文件;3. 借助`requests`库自动下载网页内容。每个案例包含详细代码和解释,并附带注意事项。掌握这些技能有助于个人和企业优化流程、节约成本。
32 3
|
1月前
|
SQL 存储 数据挖掘
使用Python和PDFPlumber进行简历筛选:以SQL技能为例
本文介绍了一种使用Python和`pdfplumber`库自动筛选简历的方法,特别是针对包含“SQL”技能的简历。通过环境准备、代码解析等步骤,实现从指定文件夹中筛选出含有“SQL”关键词的简历,并将其移动到新的文件夹中,提高招聘效率。
48 8
使用Python和PDFPlumber进行简历筛选:以SQL技能为例
|
27天前
|
JSON 数据可视化 测试技术
python+requests接口自动化框架的实现
通过以上步骤,我们构建了一个基本的Python+Requests接口自动化测试框架。这个框架具有良好的扩展性,可以根据实际需求进行功能扩展和优化。它不仅能提高测试效率,还能保证接口的稳定性和可靠性,为软件质量提供有力保障。
57 7
|
1月前
|
Android开发 开发者 Python
通过标签清理微信好友:Python自动化脚本解析
微信已成为日常生活中的重要社交工具,但随着使用时间增长,好友列表可能变得臃肿。本文介绍了一个基于 Python 的自动化脚本,利用 `uiautomator2` 库,通过模拟用户操作实现根据标签批量清理微信好友的功能。脚本包括环境准备、类定义、方法实现等部分,详细解析了如何通过标签筛选并删除好友,适合需要批量管理微信好友的用户。
60 7
|
1月前
|
安全 API 文件存储
Yagmail邮件发送库:如何用Python实现自动化邮件营销?
本文详细介绍了如何使用Yagmail库实现自动化邮件营销。Yagmail是一个简洁强大的Python库,能简化邮件发送流程,支持文本、HTML邮件及附件发送,适用于数字营销场景。文章涵盖了Yagmail的基本使用、高级功能、案例分析及最佳实践,帮助读者轻松上手。
41 4
|
1月前
|
敏捷开发 测试技术 持续交付
自动化测试之美:从零开始搭建你的Python测试框架
在软件开发的马拉松赛道上,自动化测试是那个能让你保持节奏、避免跌宕起伏的神奇小助手。本文将带你走进自动化测试的世界,用Python这把钥匙,解锁高效、可靠的测试框架之门。你将学会如何步步为营,构建属于自己的测试庇护所,让代码质量成为晨跑时清新的空气,而不是雾霾中的忧虑。让我们一起摆脱手动测试的繁琐枷锁,拥抱自动化带来的自由吧!