python制作电脑软件_利用PYTHON制作桌面版爬虫软件(一)
抱歉,对长沙房地产数据的挖掘与分析【三】,想了蛮久,觉得对自己的分析结果不是很理想。等我完善好了,我再发出来吧。今天继续开启新的一专题。主要讲解如何用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制作桌面版爬虫软件(一)相关推荐
- python制作电脑软件_利用PYTHON制作桌面版爬虫软件(二)
今天继续新的专题.主要讲解[利用PYTHON制作桌面版爬虫软件]下的如何实现界面功能(一).该讲主要包括以下三个内容:掌握如何编写主函数,运行界面. 了解pywin32模块. 如何用python识别Q ...
- python制作阴阳师脚本_利用python制作一个阴阳师小游戏
利用python制作一个阴阳师小游戏 发布时间:2020-11-27 13:59:49 来源:亿速云 阅读:84 这期内容当中小编将会给大家带来有关利用python制作一个阴阳师小游戏,文章内容丰富且 ...
- python制作图片墙_利用python生成照片墙的示例代码
PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了.其官方主页为:PIL. PIL历 ...
- python英语词汇读音_利用Python制作查单词小程序(一):抓取来自百度翻译的单词释义和音标...
小编在学习英语的时候,遇到不认识的英语单词,会用百度翻译来查询单词的释义和音标,并播放单词的读音.为了便于复习和记忆,需要将单词的释义和音标以复制粘贴的方式保存到本地. 这个过程非常繁琐,于是小编就想 ...
- python身份证验证系统_利用Python制作全国身份证号验证及查询系统!就问你吊不吊!...
大家好哇,又是一个愉快的周末,今天本鸟给大家分享1个有趣的实战项目,用python制作"全国身份证号验证及查询系统",成品界面如下图: 本系统可以实现身份证号真伪验证,年龄.性别及 ...
- 钉钉python 自动发消息软件_利用Python自动发送钉钉数据消息,一个简单的上手小项目...
现在大部分公司都使用钉钉作为内部的主要沟通工具,钉钉消息基本都上都能快速有效的被阅读,打开率会比邮件高上不少.所以准备使用钉钉来播报平台每日的成交额,并附上一些鼓励的话和图片.起到一个激励团队的作用 ...
- python获取计算机配置_利用python写一段读取电脑配置信息的程序
展开全部 主要利用python的wmi模块,提供非常多的信息.import wmi def sys_version(): c = wmi.WMI() # 操作系统版本,版本号,32位/64位 prin ...
- python账单查询软件_利用Python批量识别电子账单数据的方法
这篇文章主要介绍了利用Python批量识别电子账单数据的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 一.前言 有一定数量类似如下截图所示的账单,利用 ...
- python自定义函数画图_利用Python绘图和可视化(长文慎入)
Python有许多可视化工具,但是我主要讲解matplotlib(http://matplotlib.sourceforge.net).此外,还可以利用诸如d3.js(http://d3js.org/ ...
最新文章
- java内部类和静态内部类的区别
- NOT NULL列用IS NULL也能查到数据?
- WPF DataGridRow Event
- python中用str乘方_Python基础知识
- Java 8 Friday Goodies:Lambda和SQL
- 人工智能和机器学习的前世今生
- linux 进程自重启,linux 进程监控和自动重启的简单实现
- 【自用】Android 切割Bitmap为多个小的Bitmap
- windows 安装nginx
- python: web api、json 与 gzip、zlib库比较
- 犀牛7基本训练学习教程 Rhino 7 Essential Training
- 孙玄:微服务架构中分布式事务实现方案如何取舍
- python爬取微信群聊内容_群聊变赌场 微信QQ的这种“新玩法”应远离
- Python如何实现图片显示
- 苹果电脑安装双系统教程(使用bootcamp手动完成/MacOS X+Windows10双系统)
- pci规划的三个原则_LTE小区PCI规划原则
- 一台服务器 运行虚拟机吗,(原创)关于一台服务器能安装多少台虚拟机问题?...
- Qt5学习 模仿qq音乐播放器样式(1)
- MongoDB复制集原理和配置
- 什么是资金主力的撤资?主力撤资方式有哪些?
热门文章
- 丁晓钟怎么样_六级答案_丁晓钟:如何从各个角度学习四六级阅读理解?_沪江英语...
- Pandas 10-时序数据
- 程序员必备之——代码托管工具 git
- JS计算数组(几个数字)中的最大值
- iOS打包成 ipa包(简单粗暴方法)
- Java实现修改文件名
- K均值(K-means)聚类算法原理与代码详解
- 关于“1900年至2100年公历、农历互转的js代码”的详细分析
- 〔连载〕VFP9增强报表-运行时能力的增强
- 集成VR播放器--虚拟现实浪潮的一舟: UtoVR