PyQt5制作简单搜索拉钩网职位信息功能

1通过pip install pyqt5,或者使用国内镜像源,下载很快。再者安装pyqt5-tools,这个包内可以使用QtDesigner制作你喜欢的页面风格。

2我用的IDE是pycharm,若想在pycharm中打开QtDesigner需要进行设置。



3 在pycahrm打开QtDesigner方法:在工具栏打开External Tools就能看到。


4 制作ui界面,并保存在当前工作目录。保存后的文件是后缀名为.ui的文件需要转换成.py的文件。需要PyQt5中的一个文件叫pyuic,专门把.ui的文件转换成.py的文件

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'lagou_xiugai.ui'
#
# Created by: PyQt5 UI code generator 5.8.2
#
# WARNING! All changes made in this file will be lost!
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication
from PyQt5.QtCore import Qt

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(808, 588)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.frame = QtWidgets.QFrame(self.centralwidget)
        self.frame.setGeometry(QtCore.QRect(20, 60, 991, 31))
        self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame.setObjectName("frame")
        self.layoutWidget = QtWidgets.QWidget(self.frame)
        self.layoutWidget.setGeometry(QtCore.QRect(10, 0, 685, 26))
        self.layoutWidget.setObjectName("layoutWidget")
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.layoutWidget)
        self.horizontalLayout_2.setContentsMargins(2, 0, 0, 0)
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.label = QtWidgets.QLabel(self.layoutWidget)
        self.label.setObjectName("label")
        self.horizontalLayout_2.addWidget(self.label)
        self.comboBox = QtWidgets.QComboBox(self.layoutWidget)
        self.comboBox.setObjectName("comboBox")
        self.comboBox.addItem("")
        self.horizontalLayout_2.addWidget(self.comboBox)
        self.label_2 = QtWidgets.QLabel(self.layoutWidget)
        self.label_2.setObjectName("label_2")
        self.horizontalLayout_2.addWidget(self.label_2)
        self.comboBox_2 = QtWidgets.QComboBox(self.layoutWidget)
        self.comboBox_2.setObjectName("comboBox_2")
        self.comboBox_2.addItem("")
        self.comboBox_2.addItem("")
        self.comboBox_2.addItem("")
        self.horizontalLayout_2.addWidget(self.comboBox_2)
        self.label_3 = QtWidgets.QLabel(self.layoutWidget)
        self.label_3.setObjectName("label_3")
        self.horizontalLayout_2.addWidget(self.label_3)
        self.comboBox_3 = QtWidgets.QComboBox(self.layoutWidget)
        self.comboBox_3.setObjectName("comboBox_3")
        self.comboBox_3.addItem("")
        self.comboBox_3.addItem("")
        self.comboBox_3.addItem("")
        self.comboBox_3.addItem("")
        self.comboBox_3.addItem("")
        self.horizontalLayout_2.addWidget(self.comboBox_3)
        self.label_4 = QtWidgets.QLabel(self.layoutWidget)
        self.label_4.setObjectName("label_4")
        self.horizontalLayout_2.addWidget(self.label_4)
        self.comboBox_4 = QtWidgets.QComboBox(self.layoutWidget)
        self.comboBox_4.setObjectName("comboBox_4")
        self.comboBox_4.addItem("")
        self.comboBox_4.addItem("")
        self.comboBox_4.addItem("")
        self.comboBox_4.addItem("")
        self.comboBox_4.addItem("")
        self.comboBox_4.addItem("")
        self.comboBox_4.addItem("")
        self.comboBox_4.addItem("")
        self.horizontalLayout_2.addWidget(self.comboBox_4)
        self.label_5 = QtWidgets.QLabel(self.layoutWidget)
        self.label_5.setObjectName("label_5")
        self.horizontalLayout_2.addWidget(self.label_5)
        self.comboBox_5 = QtWidgets.QComboBox(self.layoutWidget)
        self.comboBox_5.setObjectName("comboBox_5")
        self.comboBox_5.addItem("")
        self.comboBox_5.addItem("")
        self.horizontalLayout_2.addWidget(self.comboBox_5)
        self.label_6 = QtWidgets.QLabel(self.layoutWidget)
        self.label_6.setObjectName("label_6")
        self.horizontalLayout_2.addWidget(self.label_6)
        self.comboBox_6 = QtWidgets.QComboBox(self.layoutWidget)
        self.comboBox_6.setObjectName("comboBox_6")
        self.comboBox_6.addItem("")
        self.comboBox_6.addItem("")
        self.comboBox_6.addItem("")
        self.comboBox_6.addItem("")
        self.comboBox_6.addItem("")
        self.comboBox_6.addItem("")
        self.comboBox_6.addItem("")
        self.comboBox_6.addItem("")
        self.horizontalLayout_2.addWidget(self.comboBox_6)
        self.tabWidget = QtWidgets.QTabWidget(self.centralwidget)
        self.tabWidget.setGeometry(QtCore.QRect(10, 180, 771, 361))
        self.tabWidget.setObjectName("tabWidget")
        self.tab_2 = QtWidgets.QWidget()
        self.tab_2.setObjectName("tab_2")
        self.widget = QtWidgets.QWidget(self.tab_2)
        self.widget.setGeometry(QtCore.QRect(0, 309, 761, 31))
        self.widget.setMaximumSize(QtCore.QSize(16777215, 31))
        self.widget.setObjectName("widget")
        self.pushButton_3 = QtWidgets.QPushButton(self.widget)
        self.pushButton_3.setGeometry(QtCore.QRect(10, 0, 100, 31))
        self.pushButton_3.setMaximumSize(QtCore.QSize(100, 16777215))
        self.pushButton_3.setObjectName("pushButton_3")
        self.label_7 = QtWidgets.QLabel(self.widget)
        self.label_7.setGeometry(QtCore.QRect(160, 0, 54, 31))
        self.label_7.setObjectName("label_7")
        self.pushButton_4 = QtWidgets.QPushButton(self.widget)
        self.pushButton_4.setGeometry(QtCore.QRect(230, 0, 100, 31))
        self.pushButton_4.setMaximumSize(QtCore.QSize(100, 16777215))
        self.pushButton_4.setObjectName("pushButton_4")
        self.lineEdit_2 = QtWidgets.QLineEdit(self.widget)
        self.lineEdit_2.setGeometry(QtCore.QRect(540, 0, 80, 31))
        self.lineEdit_2.setMaximumSize(QtCore.QSize(80, 31))
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.pushButton_5 = QtWidgets.QPushButton(self.widget)
        self.pushButton_5.setGeometry(QtCore.QRect(660, 0, 100, 31))
        self.pushButton_5.setObjectName("pushButton_5")
        self.tableWidget_3 = QtWidgets.QTableWidget(self.tab_2)
        self.tableWidget_3.setGeometry(QtCore.QRect(0, 0, 764, 301))
        self.tableWidget_3.setMinimumSize(QtCore.QSize(0, 301))
        self.tableWidget_3.setMaximumSize(QtCore.QSize(768, 16777215))
        self.tableWidget_3.setObjectName("tableWidget_3")
        self.tableWidget_3.setColumnCount(0)
        self.tableWidget_3.setRowCount(0)
        self.tableWidget_3.horizontalHeader().setDefaultSectionSize(128)
        self.tabWidget.addTab(self.tab_2, "")
        self.tab = QtWidgets.QWidget()
        self.tab.setObjectName("tab")
        self.tableWidget_2 = QtWidgets.QTableWidget(self.tab)
        self.tableWidget_2.setGeometry(QtCore.QRect(0, 0, 764, 301))
        self.tableWidget_2.setMinimumSize(QtCore.QSize(0, 301))
        self.tableWidget_2.setMaximumSize(QtCore.QSize(764, 16777215))
        self.tableWidget_2.setObjectName("tableWidget_2")
        self.tableWidget_2.setColumnCount(4)
        self.tableWidget_2.setRowCount(15)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setVerticalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setVerticalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setVerticalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setVerticalHeaderItem(3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setVerticalHeaderItem(4, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setVerticalHeaderItem(5, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setVerticalHeaderItem(6, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setVerticalHeaderItem(7, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setVerticalHeaderItem(8, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setVerticalHeaderItem(9, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setVerticalHeaderItem(10, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setVerticalHeaderItem(11, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setVerticalHeaderItem(12, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setVerticalHeaderItem(13, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setVerticalHeaderItem(14, item)
        item = QtWidgets.QTableWidgetItem()
        font = QtGui.QFont()
        font.setPointSize(9)
        item.setFont(font)
        self.tableWidget_2.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setHorizontalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setHorizontalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setHorizontalHeaderItem(3, item)
        self.tableWidget_2.horizontalHeader().setDefaultSectionSize(191)
        self.widget_2 = QtWidgets.QWidget(self.tab)
        self.widget_2.setGeometry(QtCore.QRect(0, 310, 761, 31))
        self.widget_2.setMaximumSize(QtCore.QSize(16777215, 31))
        self.widget_2.setObjectName("widget_2")
        self.pushButton_9 = QtWidgets.QPushButton(self.widget_2)
        self.pushButton_9.setGeometry(QtCore.QRect(10, 0, 100, 31))
        self.pushButton_9.setMaximumSize(QtCore.QSize(100, 16777215))
        self.pushButton_9.setObjectName("pushButton_9")
        self.label_9 = QtWidgets.QLabel(self.widget_2)
        self.label_9.setGeometry(QtCore.QRect(160, 0, 54, 31))
        self.label_9.setObjectName("label_9")
        self.pushButton_10 = QtWidgets.QPushButton(self.widget_2)
        self.pushButton_10.setGeometry(QtCore.QRect(230, 0, 100, 31))
        self.pushButton_10.setMaximumSize(QtCore.QSize(100, 16777215))
        self.pushButton_10.setObjectName("pushButton_10")
        self.lineEdit_4 = QtWidgets.QLineEdit(self.widget_2)
        self.lineEdit_4.setGeometry(QtCore.QRect(540, 0, 80, 31))
        self.lineEdit_4.setMaximumSize(QtCore.QSize(80, 31))
        self.lineEdit_4.setObjectName("lineEdit_4")
        self.pushButton_11 = QtWidgets.QPushButton(self.widget_2)
        self.pushButton_11.setGeometry(QtCore.QRect(660, 0, 100, 31))
        self.pushButton_11.setObjectName("pushButton_11")
        self.tabWidget.addTab(self.tab, "")
        self.layoutWidget1 = QtWidgets.QWidget(self.centralwidget)
        self.layoutWidget1.setGeometry(QtCore.QRect(0, 20, 785, 25))
        self.layoutWidget1.setObjectName("layoutWidget1")
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.layoutWidget1)
        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout.setObjectName("horizontalLayout")
        spacerItem = QtWidgets.QSpacerItem(318, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout.addItem(spacerItem)
        self.lineEdit = QtWidgets.QLineEdit(self.layoutWidget1)
        self.lineEdit.setObjectName("lineEdit")
        self.horizontalLayout.addWidget(self.lineEdit)
        self.pushButton = QtWidgets.QPushButton(self.layoutWidget1)
        self.pushButton.setObjectName("pushButton")
        self.horizontalLayout.addWidget(self.pushButton)
        spacerItem1 = QtWidgets.QSpacerItem(158, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout.addItem(spacerItem1)
        self.pushButton_2 = QtWidgets.QPushButton(self.layoutWidget1)
        self.pushButton_2.setObjectName("pushButton_2")
        self.horizontalLayout.addWidget(self.pushButton_2)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 808, 23))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        self.tabWidget.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.frame.hide()
        self.lineEdit_2.setAlignment(Qt.AlignCenter)
        self.label.setText(_translate("MainWindow", "工作地点:"))
        self.comboBox.setItemText(0, _translate("MainWindow", "不限"))
        self.label_2.setText(_translate("MainWindow", "工作性质:"))
        self.comboBox_2.setItemText(0, _translate("MainWindow", "不限"))
        self.comboBox_2.setItemText(1, _translate("MainWindow", "应届"))
        self.comboBox_2.setItemText(2, _translate("MainWindow", "实习"))
        self.label_3.setText(_translate("MainWindow", "学历"))
        self.comboBox_3.setItemText(0, _translate("MainWindow", "大专"))
        self.comboBox_3.setItemText(1, _translate("MainWindow", "本科"))
        self.comboBox_3.setItemText(2, _translate("MainWindow", "硕士"))
        self.comboBox_3.setItemText(3, _translate("MainWindow", "博士"))
        self.comboBox_3.setItemText(4, _translate("MainWindow", "不要求"))
        self.label_4.setText(_translate("MainWindow", "融资"))
        self.comboBox_4.setItemText(0, _translate("MainWindow", "未融资"))
        self.comboBox_4.setItemText(1, _translate("MainWindow", "天使轮"))
        self.comboBox_4.setItemText(2, _translate("MainWindow", "A轮"))
        self.comboBox_4.setItemText(3, _translate("MainWindow", "B轮"))
        self.comboBox_4.setItemText(4, _translate("MainWindow", "C轮"))
        self.comboBox_4.setItemText(5, _translate("MainWindow", "D轮及以上"))
        self.comboBox_4.setItemText(6, _translate("MainWindow", "上市公司"))
        self.comboBox_4.setItemText(7, _translate("MainWindow", "不需要融资"))
        self.label_5.setText(_translate("MainWindow", "排列方式"))
        self.comboBox_5.setItemText(0, _translate("MainWindow", "默认"))
        self.comboBox_5.setItemText(1, _translate("MainWindow", "最新"))
        self.label_6.setText(_translate("MainWindow", "月薪"))
        self.comboBox_6.setItemText(0, _translate("MainWindow", "不限"))
        self.comboBox_6.setItemText(1, _translate("MainWindow", "2k以下"))
        self.comboBox_6.setItemText(2, _translate("MainWindow", "2k-5k"))
        self.comboBox_6.setItemText(3, _translate("MainWindow", "5k-10k"))
        self.comboBox_6.setItemText(4, _translate("MainWindow", "10k-15k"))
        self.comboBox_6.setItemText(5, _translate("MainWindow", "15k-25k"))
        self.comboBox_6.setItemText(6, _translate("MainWindow", "25k-50k"))
        self.comboBox_6.setItemText(7, _translate("MainWindow", "50k以上"))
        self.pushButton_3.setText(_translate("MainWindow", "上一页"))
        self.label_7.setText(_translate("MainWindow", "0/0"))
        self.pushButton_4.setText(_translate("MainWindow", "下一页"))
        self.pushButton_5.setText(_translate("MainWindow", "页面跳转"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("MainWindow", "默认搜索"))
        item = self.tableWidget_2.verticalHeaderItem(0)
        item.setText(_translate("MainWindow", "1"))
        item = self.tableWidget_2.verticalHeaderItem(1)
        item.setText(_translate("MainWindow", "2"))
        item = self.tableWidget_2.verticalHeaderItem(2)
        item.setText(_translate("MainWindow", "3"))
        item = self.tableWidget_2.verticalHeaderItem(3)
        item.setText(_translate("MainWindow", "4"))
        item = self.tableWidget_2.verticalHeaderItem(4)
        item.setText(_translate("MainWindow", "5"))
        item = self.tableWidget_2.verticalHeaderItem(5)
        item.setText(_translate("MainWindow", "6"))
        item = self.tableWidget_2.verticalHeaderItem(6)
        item.setText(_translate("MainWindow", "7"))
        item = self.tableWidget_2.verticalHeaderItem(7)
        item.setText(_translate("MainWindow", "8"))
        item = self.tableWidget_2.verticalHeaderItem(8)
        item.setText(_translate("MainWindow", "9"))
        item = self.tableWidget_2.verticalHeaderItem(9)
        item.setText(_translate("MainWindow", "10"))
        item = self.tableWidget_2.verticalHeaderItem(10)
        item.setText(_translate("MainWindow", "11"))
        item = self.tableWidget_2.verticalHeaderItem(11)
        item.setText(_translate("MainWindow", "12"))
        item = self.tableWidget_2.verticalHeaderItem(12)
        item.setText(_translate("MainWindow", "13"))
        item = self.tableWidget_2.verticalHeaderItem(13)
        item.setText(_translate("MainWindow", "14"))
        item = self.tableWidget_2.verticalHeaderItem(14)
        item.setText(_translate("MainWindow", "15"))
        item = self.tableWidget_2.horizontalHeaderItem(0)
        item.setText(_translate("MainWindow", "职位名称"))
        item = self.tableWidget_2.horizontalHeaderItem(1)
        item.setText(_translate("MainWindow", "发布时间"))
        item = self.tableWidget_2.horizontalHeaderItem(2)
        item.setText(_translate("MainWindow", "薪资"))
        item = self.tableWidget_2.horizontalHeaderItem(3)
        item.setText(_translate("MainWindow", "经验/学历"))
        self.pushButton_9.setText(_translate("MainWindow", "上一页"))
        self.label_9.setText(_translate("MainWindow", "0/0"))
        self.pushButton_10.setText(_translate("MainWindow", "下一页"))
        self.pushButton_11.setText(_translate("MainWindow", "页面跳转"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "高级搜索"))
        self.pushButton.setText(_translate("MainWindow", "搜索"))
        self.pushButton_2.setText(_translate("MainWindow", "高级"))

5 和设置QtDesigner的方法一样。还是外部工具中点击添加并命名为pyuic。然后在当前工作目录找找刚刚生成的.ui文件。右键点击找到External Tools并点击右边的刚刚设置的pyuic。这时在当前目录会生成.py的文件。



5生成的.py文件只是设计的代码,直接运行是不会有所显示的。对于生成的.py文件做些代码上的修改就可以显示了


6接下来就是写爬虫方面的代码了。对于没基础的需要自己补这方面的知识咯。而且拉勾网的数据是通过ajax获取的。需要自己找接口。对于会的人来说不是那嘛难的。一下就是爬虫方面的代码

import requests
from retrying import retry
@retry(stop_max_attempt_number=5)
def page_go(kd, pn=1):
    data={
         "first":"false",
         "pn":pn,
         "kd":kd
     }
    headers = {
                "Accept":"application/json, text/javascript, */*; q=0.01",
                "Accept-Encoding":"gzip, deflate, br",
                "Accept-Language":"zh-CN,zh;q=0.8",
                "Connection":"keep-alive",
                "Content-Length":"23",
                "Content-Type":"application/x-www-form-urlencoded; charset=UTF-8",
                "Cookie":"user_trace_token=20180102230414-54720005-4a8f-4452-a0ae-de4d59d3c68e; LGUID=20180102230416-334be52a-efce-11e7-9fc4-5254005c3644; LG_LOGIN_USER_ID=b13f775bfe19d20882b3e2a0dd09c615a702a339b5e37cbd; index_location_city=%E4%B8%8A%E6%B5%B7; JSESSIONID=ABAAABAACEBACDGE6D739C3A28F4CCFE1B59CE525F585D7; TG-TRACK-CODE=search_code; PRE_UTM=; PRE_HOST=; PRE_SITE=https%3A%2F%2Fwww.lagou.com%2Fjobs%2Flist_python%3FlabelWords%3D%26fromSearch%3Dtrue%26suginput%3D; PRE_LAND=https%3A%2F%2Fwww.lagou.com%2Fjobs%2Flist_php%3Fcity%3D%25E4%25B8%258A%25E6%25B5%25B7%26cl%3Dfalse%26fromSearch%3Dtrue%26labelWords%3D%26suginput%3D; _gid=GA1.2.706123471.1524690003; _ga=GA1.2.1741662278.1514905456; LGSID=20180427131928-8f02ecb3-49da-11e8-baeb-5254005c3644; LGRID=20180427132011-a8a9dd01-49da-11e8-baeb-5254005c3644; Hm_lvt_4233e74dff0ae5bd0a3d81c6ccf756e6=1524690003,1524719282,1524777492,1524803538; Hm_lpvt_4233e74dff0ae5bd0a3d81c6ccf756e6=1524806405; SEARCH_ID=fbf80e64523447ffa0f1479260a32242",
                "Host":"www.lagou.com",
                "Origin":"https://www.lagou.com",
                "Referer":"https://www.lagou.com/jobs/list_{}?city=%E4%B8%8A%E6%B5%B7&cl=false&fromSearch=true&labelWords=&suginput=".format(kd),
                "User-Agent":"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 UBrowser/6.2.3964.2 Safari/537.36",
                "X-Anit-Forge-Code":"0",
                "X-Anit-Forge-Token":"None",
                "X-Requested-With":"XMLHttpRequest",
    }
    html = requests.post("https://www.lagou.com/jobs/positionAjax.json?city=%E4%B8%8A%E6%B5%B7&needAddtionalResult=false", headers=headers,data=data, timeout=20 )
    result = html.json()
    data = result["content"]["positionResult"]["result"]
    # print(data)
    page = result["content"]["positionResult"]["totalCount"]
    # print(page)
    return data, page

7再者通过搜索按钮的绑定,以及动态生成职位信息内容,以及下一页,上一页,翻页的功能。需要有些许基础的PyQt5的知识。

from lagou_xiugai import Ui_MainWindow
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidgetItem, QAbstractItemView, QWidget
from PyQt5.QtWidgets import QDesktopWidget
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QFont
from spider import page_go


class Lagou_Main(QMainWindow, Ui_MainWindow):

    def __init__(self):
        super().__init__()
        self.center()
        self.setupUi(self)
        self.current_number = 1
        self.download_list = []
        self.pushButton_2.setCheckable(True)
        self.pushButton_2.toggle()
        self.pushButton_2.clicked.connect(self.display)
        self.pushButton.clicked.connect(lambda: self.display_data("current"))
        self.pushButton_4.clicked.connect(lambda: self.display_data("jump_next"))
        self.pushButton_3.clicked.connect(lambda: self.display_data("jump_before"))
        self.pushButton_5.clicked.connect(lambda: self.display_data("jump_detail_number"))

    def display_data(self, go_type):
        list_col = ["companyFullName", "positionName", "formatCreateTime", "salary", "workYear", "education"]
        search_text = self.lineEdit.text()
        if go_type == 'current':
         data, total_count = page_go(search_text)
         self.current_number = 1
        elif go_type == 'jump_next':
            self.current_number += 1

            total = self.label_7.text().split('/')[1]
            if self.current_number<=int(total):
                data,total_count = page_go(search_text, self.current_number)
            else:
                self.current_number = int(total)
                data,total_count = page_go(search_text, self.current_number)

        elif go_type == 'jump_before':
            self.current_number -= 1
            if self.current_number>=1:
                data,total_count = page_go(search_text, self.current_number)
            else:
                self.current_number = 1
                data,total_count = page_go(search_text, self.current_number)
        else:
            detail_number = self.lineEdit_2.text()
            data, total_count = page_go(search_text, int(detail_number))
            self.current_number = int(detail_number)

        page = total_count // 15

        if total_count % 15 !=0 :
            page = page +1
        self.label_7.setText(str(self.current_number) + '/' + str(page))
        self.tableWidget_3.setRowCount(len(data))
        self.tableWidget_3.setColumnCount(6)
        self.tableWidget_3.setHorizontalHeaderLabels(["公司名称", "职位", "发布时间", "薪资", "经验", "学历"])
        self.tableWidget_3.setVerticalHeaderLabels([str(i) for i in range(1,len(data))])

        for i in range(len(data)):
            for d in range(6):
                name_col = list_col[d]
                item = QTableWidgetItem(data[i][name_col])
                # if name_col == "companyFullName":
                #     item.setFlags(Qt.ItemIsUserCheckable|Qt.ItemIsEnabled)
                #     item.setCheckState(Qt.Unchecked)
                item.setTextAlignment(Qt.AlignCenter)
                self.tableWidget_3.setItem(i,d,item)

        # self.tableWidget_3.resizeColumnsToContents()


    def center(self):
        screen = QDesktopWidget().screenGeometry()
        size = self.geometry()
        self.move((screen.width()-size.width())/2, (screen.height()-size.height())/2)


    def display(self):
        if self.pushButton_2.isChecked():
            self.frame.setHidden(True)
        else:
            self.frame.setHidden(False)



if __name__ == '__main__':
    app = QApplication(sys.argv)
    my = Lagou_Main()
    my.show()
    sys.exit(app.exec_())

以下是效果图





  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值