首页 > 编程语言 >Python通过解析html来实现简历系统

Python通过解析html来实现简历系统

时间:2023-08-04 22:33:29浏览次数:61  
标签:简历 Python setText id html QLineEdit addWidget self QLabel

把以上三个文件放到personData目录下即可。

Admin.pyw

# coding: utf-8 
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import os,sys,time,json
import lxml.html
reload(sys)
sys.setdefaultencoding("utf-8")


class mat(QDialog):
    def __init__(self):
        super(mat, self).__init__()

        self.initUI()
    def initUI(self):
        self.setWindowTitle(u"客户端")

        self.setWindowFlags(Qt.Window)

        self.ListHtml=getHtml()

        self.setWindowTitle(u"管理端")
        self.setWindowFlags(Qt.Window)

        labelTime=QLabel(u"日期:")
        labelNmae=QLabel(u"姓名:")
        labelContent=QLabel(u"职务:")

        htmlName=QLabel(u'姓名')
        self.editName=QLineEdit()

        htmlSex=QLabel(u'性别')
        self.editSex=QLineEdit()

        htmlMinzu=QLabel(u'民族')

        self.editMinzu=QLineEdit()

        htmlHeight=QLabel(u'身高')
        self.editHeight=QLineEdit()

        htmlZhiwei=QLabel(u'职务')
        self.editZhiwei=QLineEdit()

        htmlMianmao=QLabel(u'面貌')
        self.editMianmao=QLineEdit()

        htmlXuezhi=QLabel(u'学制')
        self.editXuezhi=QLineEdit()

        htmlXueli=QLabel(u'学历')
        self.editXueli=QLineEdit()

        htmlEndtime=QLabel(u'毕业时间')
        self.editEndtime=QLineEdit()

        htmlHuji=QLabel(u'户籍')
        self.editHuji=QLineEdit()

        htmlBirdate=QLabel(u'出生日期')
        self.editBirdate=QLineEdit()


        htmlZhuangye=QLabel(u'专业')
        self.editZhuangye=QLineEdit()

        htmlSchool=QLabel(u'毕业学校')
        self.editSchool=QLineEdit()

        htmlAddress=QLabel(u'通信地址')
        self.editAddress=QLineEdit()

        htmlPhone=QLabel(u'联系电话')
        self.editPhone=QLineEdit()

        htmlEmail=QLabel(u'E-mail  ')
        self.editEmail=QLineEdit()

        htmlYoubian=QLabel(u'  邮编  ')
        self.editYoubian=QLineEdit()


        self.timeEdit=QComboBox()
        self.nameEdit=QComboBox()
        self.contentEdit=QComboBox()

        self.dataRead()

        lay1=QHBoxLayout()
        lay1.addWidget(labelTime)
        lay1.addWidget(self.timeEdit)
        lay2=QHBoxLayout()
        lay2.addWidget(labelNmae)
        lay2.addWidget(self.nameEdit)
        lay3=QHBoxLayout()
        lay3.addWidget(labelContent)
        lay3.addWidget(self.contentEdit)

        Layout=QVBoxLayout()
        Layout.addLayout(lay1)
        Layout.addLayout(lay2)
        Layout.addLayout(lay3)


        lat1=QHBoxLayout()
        lat1.addWidget(htmlName)
        lat1.addWidget(self.editName)
        lat1.addWidget(htmlSex)
        lat1.addWidget(self.editSex)
        lat1.addWidget(htmlMinzu)
        lat1.addWidget(self.editMinzu)

        lat2=QHBoxLayout()
        lat2.addWidget(htmlHeight)
        lat2.addWidget(self.editHeight)
        lat2.addWidget(htmlZhiwei)
        lat2.addWidget(self.editZhiwei)
        lat2.addWidget(htmlMianmao)
        lat2.addWidget(self.editMianmao)

        lat3=QHBoxLayout(htmlXuezhi)
        lat3.addWidget(self.editXuezhi)
        lat3.addWidget(self.editXuezhi)
        lat3.addWidget(htmlXueli)
        lat3.addWidget(self.editXueli)
        lat3.addWidget(htmlEndtime)
        lat3.addWidget(self.editEndtime)

        lat4=QHBoxLayout()
        lat4.addWidget(htmlHuji)
        lat4.addWidget(self.editHuji)
        lat4.addWidget(htmlBirdate)
        lat4.addWidget(self.editBirdate)

        lat5=QHBoxLayout()
        lat5.addWidget(htmlZhuangye)
        lat5.addWidget(self.editZhuangye)
        lat5.addWidget(htmlSchool)
        lat5.addWidget(self.editSchool)

        lat6=QHBoxLayout()
        lat6.addWidget(htmlAddress)
        lat6.addWidget(self.editAddress)
        lat6.addWidget(htmlPhone)
        lat6.addWidget(self.editPhone)

        lat7=QHBoxLayout()
        lat7.addWidget(htmlEmail)
        lat7.addWidget(self.editEmail)
        lat7.addWidget(htmlYoubian)
        lat7.addWidget(self.editYoubian)

        layout=QVBoxLayout()
        layout.addLayout(lat1)
        layout.addLayout(lat2)
        layout.addLayout(lat3)
        layout.addLayout(lat4)
        layout.addLayout(lat5)
        layout.addLayout(lat6)
        layout.addLayout(lat7)





        mainLayout=QHBoxLayout(self)
        mainLayout.addLayout(Layout)
        mainLayout.addLayout(layout)
        self.setLayout(mainLayout)


        self.timeEdit.currentIndexChanged.connect(self.pro_re)
        self.nameEdit.currentIndexChanged.connect(self.pro1_re)
        self.contentEdit.currentIndexChanged.connect(self.pro2_re)
        self.resize(650,450)

    def dataRead(self):
        dict_all = self.ListHtml
        for id in dict_all:
            self.timeEdit.addItem(id[-1][-1])
            self.nameEdit.addItem(id[0][1])
            self.contentEdit.addItem(id[1][3])
    def pro_re(self):
        index=self.timeEdit.currentIndex()
        self.nameEdit.setCurrentIndex(index)
        self.contentEdit.setCurrentIndex(index)

        getName=str(self.nameEdit.currentText())
        getTime=str(self.timeEdit.currentText())
        getContent=str(self.contentEdit.currentText())
        dict_all = self.ListHtml
        for id in dict_all:
            if id[0][1]==getName and id[-1][-1]==getTime and id[1][3]==getContent:

                self.editName.setText(id[0][1])
                self.editSex.setText(id[0][3])
                self.editMinzu.setText(id[0][5])

                self.editHeight.setText(id[1][1])
                self.editZhiwei.setText(id[1][3])
                self.editMianmao.setText(id[1][5])


                self.editHuji.setText(id[3][1])
                self.editBirdate.setText(id[3][3])

                self.editZhuangye.setText(id[4][1])
                self.editSchool.setText(id[4][3])

                self.editAddress.setText(id[7][1])
                self.editPhone.setText(id[7][3])

                self.editEmail.setText(id[8][1])
                self.editYoubian.setText(id[8][3])
    def pro1_re(self):
        index=self.nameEdit.currentIndex()
        self.timeEdit.setCurrentIndex(index)
        self.contentEdit.setCurrentIndex(index)

        getName=str(self.nameEdit.currentText())
        getTime=str(self.timeEdit.currentText())
        getContent=str(self.contentEdit.currentText())
        dict_all = self.ListHtml
        for id in dict_all:
            if id[0][1]==getName and id[-1][-1]==getTime and id[1][3]==getContent:

                self.editName.setText(id[0][1])
                self.editSex.setText(id[0][3])
                self.editMinzu.setText(id[0][5])

                self.editHeight.setText(id[1][1])
                self.editZhiwei.setText(id[1][3])
                self.editMianmao.setText(id[1][5])


                self.editHuji.setText(id[3][1])
                self.editBirdate.setText(id[3][3])

                self.editZhuangye.setText(id[4][1])
                self.editSchool.setText(id[4][3])

                self.editAddress.setText(id[7][1])
                self.editPhone.setText(id[7][3])

                self.editEmail.setText(id[8][1])
                self.editYoubian.setText(id[8][3])




    def pro2_re(self):
        index=self.contentEdit.currentIndex()
        self.nameEdit.setCurrentIndex(index)
        self.timeEdit.setCurrentIndex(index)

        getName=str(self.nameEdit.currentText())
        getTime=str(self.timeEdit.currentText())
        getContent=str(self.contentEdit.currentText())
        dict_all = self.ListHtml
        for id in dict_all:
            if id[0][1]==getName and id[-1][-1]==getTime and id[1][3]==getContent:

                self.editName.setText(id[0][1])
                self.editSex.setText(id[0][3])
                self.editMinzu.setText(id[0][5])

                self.editHeight.setText(id[1][1])
                self.editZhiwei.setText(id[1][3])
                self.editMianmao.setText(id[1][5])


                self.editHuji.setText(id[3][1])
                self.editBirdate.setText(id[3][3])

                self.editZhuangye.setText(id[4][1])
                self.editSchool.setText(id[4][3])

                self.editAddress.setText(id[7][1])
                self.editPhone.setText(id[7][3])

                self.editEmail.setText(id[8][1])
                self.editYoubian.setText(id[8][3])


def getHtml():
    upDid= os.path.abspath(os.path.join(os.path.dirname(__file__),"."))
    htmlDid=upDid+"\\personData"
    getdir=os.listdir(htmlDid)
    #print getdir
    listHtml=[]
    for id in getdir:
        if id.split('.')[-1]=="html":
            importPath=htmlDid+"\\"+id
            doc = lxml.html.parse(importPath)
            a=[[j for j in i.xpath('td/a[not(contains(.,"spam"))]/@href | td[not(a)]/text()')] for i in doc.xpath('//tr')]
            listHtml.append(a)
    return (listHtml)

def main():

    app = QApplication(sys.argv)
    ex = mat()
    ex.show()
    app.exec_()

if __name__ == '__main__':
    main()

Python通过解析html来实现简历系统_html

Python通过解析html来实现简历系统_html_02

Python通过解析html来实现简历系统_html_03

Python通过解析html来实现简历系统_Layout_04

admin.py会自动遍历personData目录下的html文件,并捕获信息,设置到界面上。
如果想要添加模板,打开html修改信息另存即可,名字随意。
运行admin.py下次就回把模板的信息设置到界面上。
moban

<!-- saved from url=(0172)file:///C:/Users/Administrator/Desktop/%E5%BD%B1%E8%A7%86%E7%89%B9%E6%95%88%E8%AF%BE%E7%A8%8B%E8%AE%BE%E8%AE%A1/%E7%AE%80%E5%8E%86%E7%B3%BB%E7%BB%9F/personData/jianli1.html -->
    <html><head><meta http-equiv="Content-Type" content="text/html; charset=GBK"><title>简历</title>
    <style type="text/css">
    body,td,th {
        font-size: 16px;
        color: #000;
    }
    </style>
</head>

<body>
<center>
<form>
  <p><b>个人简历</b></p>
  <table cellpadding="0" cellspacing="0" border="1">
    <tbody><tr>
      <td width="64" height="33">姓名</td>
      <td width="109" contenteditable="true"></td>

      <td width="73">性别</td>
      <td width="46" contenteditable="true">男</td>
      <td width="112">民族</td>
      <td width="159" contenteditable="true"></td>
      <td width="154" rowspan="4"><p><img src="./moban_files/3c1dd7d958c7dc47a2b707e8a72b5e64.jpg" width="154" height="203"></p></td>
    </tr>
    <tr>
      <td height="31">身高</td>
      <td contenteditable="true"></td>
      <td>职位</td>
      <td contenteditable="true">学生</td>
      <td>政治面貌</td>
      <td contenteditable="true"></td>
    </tr>
    <tr>
      <td height="31">学制</td>
      <td contenteditable="true"></td>
      <td>学历</td>
      <td contenteditable="true">本科</td>
      <td>毕业时间</td>
      <td contenteditable="true"></td>
    </tr>
    <tr>
      <td height="46">户籍</td>
      <td colspan="3" contenteditable="true"></td>
      <td>出生年月</td>
      <td contenteditable="true"></td>
    </tr>
    <tr>
      <td height="39">专业</td>
      <td contenteditable="true"></td>
      <td>毕业学校</td>
      <td colspan="2" contenteditable="true"></td>
      <td>就业范围</td>
      <td contenteditable="true"></td>
    </tr>
    <tr>
      <td height="39">外语水平</td>
      <td colspan="3" contenteditable="true">四级</td>
      <td>计算机水平</td>
      <td colspan="2" contenteditable="true"></td>
    </tr>
    <tr>
      <td>奖励情况</td>
      <td colspan="6" contenteditable="true"></td>
    </tr>
    <tr>
      <td>通讯地址</td>
      <td colspan="4" contenteditable="true"></td>
      <td>联系电话</td>
      <td contenteditable="true"></td>
    </tr>
    <tr>
      <td>E-mail</td>
      <td colspan="3" contenteditable="true"></td>
      <td>邮编</td>
      <td contenteditable="true"></td>
      <td> </td>
    </tr>
    <tr>
      <td height="28" colspan="7">教育经历</td>
    </tr>
    <tr>
      <td colspan="7" contenteditable="true"></td>
    </tr>

    <tr>
      <td colspan="4">日期</td>
      <td colspan="3" contenteditable="true"></td>
    </tr>
  </tbody></table>
  <p> </p>
</form>
</center>


</body></html>


标签:简历,Python,setText,id,html,QLineEdit,addWidget,self,QLabel
From: https://blog.51cto.com/u_15872074/6969465

相关文章

  • 猿创征文|Python学习工具千千万,我心中的TOP10
    前言:大家好,我是是Dream呀,在我们平时的开发和生活中,每天都在使用、寻找、贡献、创作各类开发者工具,包括开源服务、付费软件、API等。好的工具可以极大帮助我们提升效率,服务业务。作为一名资深的Python博主,很多人都会问我平时使用什么工具,亦或者说有什么比较好的推荐工具呢?实话实......
  • Web前端大作业、基于HTML+CSS+JavaScript响应式个人相册博客网站
    ......
  • python fitz模块报错RuntimeError: Directory ‘static/’ does not exist 解决方案
    报错fitz模块报错RuntimeError:Directory‘static/’doesnotexist原因使用Python处理PDF文档时,需要使用fitz模块。由于Python3.8以上版本与fitz有兼容问题,会出现以下错误信息:RuntimeError:Directory‘static/’doesnotexist解决办法卸载fitz模块,安装pymupdf模块......
  • Python全局变量
    关于Python跨文件全局变量作用域的问题可以定义一个Global_var.py将所有的全局变量放进去,在其他模块导入;重点:在其他模块中使用importGlobal_var导入时,在函数内部使用Global_var.变量名即可直接修改全局变量,无需global修饰;但是使用fromGlobal_varimport*导入模块时必须要在......
  • CTFer成长记录——CTF之Web专题·攻防世界-Web_python_template_injection
    一、题目链接https://adworld.xctf.org.cn/challenges/list二、解法步骤  python的flask模板注入的题思路比较固定,Jinja2模板引擎中,{{}}是变量包裹标识符。{{}}并不仅仅可以传递变量,还可以执行一些简单的表达式。1.猜测是否存在注入:直接在url后面加上{{config}}2.获取基本......
  • python中的exec()、eval()以及complie()
    1.eval函数函数的作用:计算指定表达式的值。也就是说它要执行的python代码只能是单个表达式(注意eval不支持任何形式的赋值操作),而不能是复杂的代码逻辑。eval(source,globals=None,locals=None,/)参数说明:source:必选参数,可以是字符串,也可以是一个任意的code(代码)对象实......
  • python多进程编程常用到的方法
    python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU资源,在python中大部分情况需要使用多进程。python提供了非常好用的多进程包Multiprocessing,只需要定义一个函数,python会完成其它所有事情。借助这个包,可以轻松完成从单进程到并发执行的转换。multiprocessing支......
  • 【python_5】基础语法:数据类型以及数据类型转变!
    1.使用type()语句查看数据类型目前在入门阶段,我们主要接触如下三类数据类型:类型描述说明string字符串类型用引号引起来的数据都是字符串int整型(有符号)数字类型,存放整数如-1,10,0等float浮点型(有符号)数字类型,存放小数如-3.14,6.78等我们可以通过type()语句来得到数据的类型:type(被查......
  • 关于Python的学习记录(二十一_对象的序列化和反序列化)
    JSON概述在Python中,我们可以将程序中的数据以JSON格式进行保存。JSON是“JavaScriptObjectNotation”的缩写,它本来是JavaScript语言中创建对象的一种字面量语法,现在已经被广泛的应用于跨语言跨平台的数据交换。使用JSON的原因非常简单,因为它结构紧凑而且是纯文本,任何操......
  • HTML | HTML总结
    HTML注释<!--注释内容-->HTML标签主体结构标签headbodyhtmlHEAD内标签title页面标题meta指定页面元信息单标签 属性:name、content、http-equiv、charset格式排版标签div无语义标签h1-h6页面内容的标题p段落其他常用标签br换行单标签hr分隔单......