学做网站多久,网站改版降权多久恢复,邢台163交友手机端,头像制作免费生成器最近#xff0c;小编在处理简历时#xff0c;发现大量简历需要一个个打开文件#xff0c;复制姓名、邮箱、电话号码、学历等关键信息#xff0c;效率特别低且部分文件无法直接复制。于是#xff0c;小编便写了文件阅读工具的脚本#xff0c;支持文件格式有#xff1a;do…最近小编在处理简历时发现大量简历需要一个个打开文件复制姓名、邮箱、电话号码、学历等关键信息效率特别低且部分文件无法直接复制。于是小编便写了文件阅读工具的脚本支持文件格式有docdocxpdf。
通过脚本自动匹配各种简历的文件格式并解析出用户名、邮箱、电话号码、学历等关键信息。然后调用企业微信使用正则过滤简历使用request一键内推到企微。
ps. 上月战绩内推400人内推成功8人入职5人收米8000*25000*331000。
{感谢您的投递: 331, 简历处理中: 19, 简历初筛: 5, 本轮通过: 6, Offer已发放: 1, 进行中: 2, 拒绝Offer: 3, 接受Offer: 5} 脚本功能提取简历文本
输入要解析的文件路径
输出解析的内容包括不限于姓名、邮箱、电话号码、学历等信息。
环境python 3.6 、macdoc转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
第二步读文件
def get_files(path):res []for i in os.listdir(path):# 去掉临时文件if os.path.isfile(pathi) and ~$ not in i and .DS not in i:# 去重 1.doc 和 1.docxif (pathi).split(.)[0] not in str(res):res.append(pathi)return res
第三步读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, laparamslaparam)# 创建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
第四步读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.textelse:# 先转格式docdocxos.system(textutil -convert docx %s%file)word_reader(filex)res f docx.Document(filex)for para in f.paragraphs:res res \n para.textreturn resexcept:# print(file, read failed)return
完整代码
# 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 PDFPageAggregatordef get_files(path):res []for i in os.listdir(path):# 去掉临时文件if os.path.isfile(pathi) and ~$ not in i and .DS not in i:# 去重 1.doc 和 1.docxif (pathi).split(.)[0] not in str(res):res.append(pathi)return resdef 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, laparamslaparam)# 创建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 resdef word_reader(file):try:# docx 直接读if docx in file:res f docx.Document(file)for para in f.paragraphs:res res \n para.textelse:# 先转格式docdocxos.system(textutil -convert docx %s%file)word_reader(filex)res f docx.Document(filex)for para in f.paragraphs:res res \n para.textreturn resexcept:# 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 resif __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)本期实现任何格式的简历解析成文本便于后续筛选优质简历。
下期揭晓简历过滤包括学历稳定性年龄工龄与职级匹配度等全自动化内推代码。