抱歉,对长沙房地产数据的挖掘与分析【三】,想了蛮久,觉得对自己的分析结果不是很理想。等我完善好了,我再发出来吧。今天继续开启新的一专题。主要讲解如何用PYTHON实现简单的桌面软件的制作。

题外话,我的知乎专栏:PYTHON挖掘机已经开通,大家可以关注下,以方便文章的及时提醒与查看。本系列课程讲述“PYTHON爬虫之旅”,具体大纲可参考:

好了,言归正传,【如何用PYTHON实现简单的桌面软件的制作】专题分为三个部分:

需要安装的模块工具等

编写软件界面

实现界面功能

本讲将讲述前两个部分:需要安装的模块工具等以及如何编写软件界面。

1. 需要安装的模块工具等

编写桌面软件,隶属于CS架构。所谓CS架构:

C/S架构,即Client/Server(客户机/服务器)结构,是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,可以充分利用两端硬件环境的优势。

而后期我们要将的利用PYTHON将爬取的内容制作网页则明显属于BS架构:

B/S结构,即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓3-tier结构。

用PYTHON编写桌面软件主要有一下Tkinter,PyQt,wxPython等。三者各有优劣,本次我们将采用PyQt编写。打包模块主要有py2exe和pyinstalle,同样各有优劣。本次采用py2exe打包。

采用的系统、PYTHON版本以及需要的其他的库文件:

windows系统

Python 2.7

PyQt4

lxml

py2exe

之前也就说过,本套教程适用于小白。可能会有疑惑,说这么多名词,对于我们小白来说完全不懂啊。别急别急,我也不太多懂。/(ㄒoㄒ)/~~ Just do it !

为什么采用PyQt呢,因为PyQt里面有Designer:

对于对界面美观程度要求不高的我们来说,自己动手画就足够啦。

2. 编写(绘制)软件界面

打开Desinger:

选择Widget就开始拖动控件,自己画界面吧。左侧控件在绘制软件过程中主要会用到Push Button,Label,Line Edit,Text Edit,Radio Button,Check Box等。记得给每个空间起一个合适的objectName,因为以后实现功能的时候会用到。然后我就画了下面这个界面。

通过该界面,估计大家也能猜想到我要实现的功能。对,没错,这个软件主要是用来实现直播更新的功能。需要完成以下内容:

通过账号,密码登录目标网站。

获取登陆后的目标页面的源代码。

解析源码,更新到界面上。

将抓取到的直播文字信息,发送给制定的QQ好友或者是QQ群。

每隔固定时间抓取一次,定时更新。

画好界面之后,保存一下,命名为qq_define.ui。因为目前为止,这个还是个ui界面,我们要用python编写软件必须是.py才能行啊。所以,要将,ui编译为.py,怎么编译呢?

切换到.ui的文件保存地址,cmd打开命令窗口,输入:pyuic4 qq_define.ui > qq_define.py,即可将.ui编译为.py啦,O(∩_∩)O~~

打开qq_define.py看一看:

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

# Form implementation generated from reading ui file 'qq_define.ui'

#

# Created by: PyQt4 UI code generator 4.11.4

#

# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui

try:

_fromUtf8 = QtCore.QString.fromUtf8

except AttributeError:

def _fromUtf8(s):

return s

try:

_encoding = QtGui.QApplication.UnicodeUTF8

def _translate(context, text, disambig):

return QtGui.QApplication.translate(context, text, disambig, _encoding)

except AttributeError:

def _translate(context, text, disambig):

return QtGui.QApplication.translate(context, text, disambig)

class Ui_Form(object):

def setupUi(self, Form):

Form.setObjectName(_fromUtf8("Form"))

Form.resize(748, 621)

self.text_qq = QtGui.QTextEdit(Form)

self.text_qq.setGeometry(QtCore.QRect(20, 20, 131, 71))

self.text_qq.setDocumentTitle(_fromUtf8(""))

self.text_qq.setObjectName(_fromUtf8("text_qq"))

self.text_name = QtGui.QTextEdit(Form)

self.text_name.setGeometry(QtCore.QRect(160, 20, 121, 71))

self.text_name.setObjectName(_fromUtf8("text_name"))

self.text_content = QtGui.QTextEdit(Form)

self.text_content.setGeometry(QtCore.QRect(290, 20, 104, 71))

self.text_content.setObjectName(_fromUtf8("text_content"))

self.button_send = QtGui.QPushButton(Form)

self.button_send.setGeometry(QtCore.QRect(420, 20, 81, 31))

self.button_send.setObjectName(_fromUtf8("button_send"))

self.button_start = QtGui.QPushButton(Form)

self.button_start.setGeometry(QtCore.QRect(420, 60, 81, 31))

self.button_start.setObjectName(_fromUtf8("button_start"))

self.label = QtGui.QLabel(Form)

self.label.setGeometry(QtCore.QRect(530, 30, 54, 12))

self.label.setObjectName(_fromUtf8("label"))

self.label_2 = QtGui.QLabel(Form)

self.label_2.setGeometry(QtCore.QRect(530, 70, 54, 12))

self.label_2.setObjectName(_fromUtf8("label_2"))

self.edit_num = QtGui.QLineEdit(Form)

self.edit_num.setGeometry(QtCore.QRect(570, 30, 113, 20))

self.edit_num.setObjectName(_fromUtf8("edit_num"))

self.edit_pwd = QtGui.QLineEdit(Form)

self.edit_pwd.setGeometry(QtCore.QRect(570, 70, 113, 20))

self.edit_pwd.setObjectName(_fromUtf8("edit_pwd"))

self.text_html = QtGui.QTextEdit(Form)

self.text_html.setGeometry(QtCore.QRect(20, 120, 701, 481))

self.text_html.setObjectName(_fromUtf8("text_html"))

self.retranslateUi(Form)

QtCore.QMetaObject.connectSlotsByName(Form)

def retranslateUi(self, Form):

Form.setWindowTitle(_translate("Form", "示例软件", None))

self.text_qq.setHtml(_translate("Form", ""-//W3C//DTD HTML 4.0//EN\"\"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"

"

\n"

"

打开要发送的窗口 点击获取发送窗口

", None))

self.text_name.setHtml(_translate("Form", ""-//W3C//DTD HTML 4.0//EN\"\"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"

"

\n"

"

这里是抓取网页的标题

", None))

self.text_content.setHtml(_translate("Form", ""-//W3C//DTD HTML 4.0//EN\"\"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"

"

\n"

"

这里是获取的网页内容

", None))

self.button_send.setText(_translate("Form", "获取发送窗口", None))

self.button_start.setText(_translate("Form", "开始", None))

self.label.setText(_translate("Form", "账号", None))

self.label_2.setText(_translate("Form", "密码", None))

如此,我们就画好了界面啦~还是很简单吧。

下节我们就来在这个qq_define.py的这个基础上,写我们的这个软件功能啦。敬请期待哟~(☆▽☆)

本专题将于微信公众号【一只IT汪】首发,欢迎大家的关注,谢谢!

本系列教程将不定期更新,敬请关注 :)

如果喜欢,请一定记得点赞哟~ 你的赞就是我更新的动力~ o(*≧▽≦)ツ

python制作电脑软件_利用PYTHON制作桌面版爬虫软件(一)相关推荐

  1. python制作电脑软件_利用PYTHON制作桌面版爬虫软件(二)

    今天继续新的专题.主要讲解[利用PYTHON制作桌面版爬虫软件]下的如何实现界面功能(一).该讲主要包括以下三个内容:掌握如何编写主函数,运行界面. 了解pywin32模块. 如何用python识别Q ...

  2. python制作阴阳师脚本_利用python制作一个阴阳师小游戏

    利用python制作一个阴阳师小游戏 发布时间:2020-11-27 13:59:49 来源:亿速云 阅读:84 这期内容当中小编将会给大家带来有关利用python制作一个阴阳师小游戏,文章内容丰富且 ...

  3. python制作图片墙_利用python生成照片墙的示例代码

    PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了.其官方主页为:PIL. PIL历 ...

  4. python英语词汇读音_利用Python制作查单词小程序(一):抓取来自百度翻译的单词释义和音标...

    小编在学习英语的时候,遇到不认识的英语单词,会用百度翻译来查询单词的释义和音标,并播放单词的读音.为了便于复习和记忆,需要将单词的释义和音标以复制粘贴的方式保存到本地. 这个过程非常繁琐,于是小编就想 ...

  5. python身份证验证系统_利用Python制作全国身份证号验证及查询系统!就问你吊不吊!...

    大家好哇,又是一个愉快的周末,今天本鸟给大家分享1个有趣的实战项目,用python制作"全国身份证号验证及查询系统",成品界面如下图: 本系统可以实现身份证号真伪验证,年龄.性别及 ...

  6. 钉钉python 自动发消息软件_利用Python自动发送钉钉数据消息,一个简单的上手小项目...

    现在大部分公司都使用钉钉作为内部的主要沟通工具,钉钉消息基本都上都能快速有效的被阅读,打开率会比邮件高上不少.所以准备使用钉钉来播报平台每日的成交额,并附上一些鼓励的话和图片.起到一个激励团队的作用 ...

  7. python获取计算机配置_利用python写一段读取电脑配置信息的程序

    展开全部 主要利用python的wmi模块,提供非常多的信息.import wmi def sys_version(): c = wmi.WMI() # 操作系统版本,版本号,32位/64位 prin ...

  8. python账单查询软件_利用Python批量识别电子账单数据的方法

    这篇文章主要介绍了利用Python批量识别电子账单数据的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 一.前言 有一定数量类似如下截图所示的账单,利用 ...

  9. python自定义函数画图_利用Python绘图和可视化(长文慎入)

    Python有许多可视化工具,但是我主要讲解matplotlib(http://matplotlib.sourceforge.net).此外,还可以利用诸如d3.js(http://d3js.org/ ...

最新文章

  1. java内部类和静态内部类的区别
  2. NOT NULL列用IS NULL也能查到数据?
  3. WPF DataGridRow Event
  4. python中用str乘方_Python基础知识
  5. Java 8 Friday Goodies:Lambda和SQL
  6. 人工智能和机器学习的前世今生
  7. linux 进程自重启,linux 进程监控和自动重启的简单实现
  8. 【自用】Android 切割Bitmap为多个小的Bitmap
  9. windows 安装nginx
  10. python: web api、json 与 gzip、zlib库比较
  11. 犀牛7基本训练学习教程 Rhino 7 Essential Training
  12. 孙玄:微服务架构中分布式事务实现方案如何取舍
  13. python爬取微信群聊内容_群聊变赌场 微信QQ的这种“新玩法”应远离
  14. Python如何实现图片显示
  15. 苹果电脑安装双系统教程(使用bootcamp手动完成/MacOS X+Windows10双系统)
  16. pci规划的三个原则_LTE小区PCI规划原则
  17. 一台服务器 运行虚拟机吗,(原创)关于一台服务器能安装多少台虚拟机问题?...
  18. Qt5学习 模仿qq音乐播放器样式(1)
  19. MongoDB复制集原理和配置
  20. 什么是资金主力的撤资?主力撤资方式有哪些?

热门文章

  1. 丁晓钟怎么样_六级答案_丁晓钟:如何从各个角度学习四六级阅读理解?_沪江英语...
  2. Pandas 10-时序数据
  3. 程序员必备之——代码托管工具 git
  4. JS计算数组(几个数字)中的最大值
  5. iOS打包成 ipa包(简单粗暴方法)
  6. Java实现修改文件名
  7. K均值(K-means)聚类算法原理与代码详解
  8. 关于“1900年至2100年公历、农历互转的js代码”的详细分析
  9. 〔连载〕VFP9增强报表-运行时能力的增强
  10. 集成VR播放器--虚拟现实浪潮的一舟: UtoVR