利用 python 的各种开源工具自制浏览器
2019独角兽企业重金招聘Python工程师标准>>>
0.导言
很多时候,我们有这样的需求:想利用现在先进的HTML5和JS技术,又不想走B/S架构,想弄出个像客户端一样的浏览器外壳。本文要解决的就是这个问题,我们利用 python 环境下所提供的各种工具,编译生成一个高度可用的制作浏览器。
1.准备工作
这里说一下自制浏览器所需要的环境与软件。
windows操作系统:因为我最后要生成一个exe文件,所以操作系统环境直接利用了windows。
python2.7 :我利用的是python2.7的环境,这是我觉得目前用的最顺手的一个环境,注:虽然我的系统是64位的,但这里安装的python环境是32位的,因为考虑到做出来的浏览器的兼容性,还是用32位的环境。
PyQt4 :Qt 是一款GUI应用程序的开发框架,因为我们既然要做浏览器,图形界面是免不了的,PyQt4是Qt在python环境下的一个实现,而且这个包中还包含了webkit浏览器内核,非常好用。官方网站:http://www.riverbankcomputing.co.uk/news
PyInstaller : 这是一个可以把python程序转换成exe可执行程序的 python 包,也很好用。官方网址:http://www.pyinstaller.org/
pywin32 : 这是 PyInstaller 需要依赖的一个包。下载地址:http://sourceforge.net/projects/pywin32/
UPX : 这是一款先进的可执行程序文件压缩器,若不安装它,运行 pyinstaller.py 会报错。下载地址:http://sourceforge.net/projects/upx/ ;下载完之后放在 PyInstaller中与pyinstaller.py的相同目录下。
VerySimpleWebBrowser.py:这是一个老外用 python 写的简单的浏览器的源码,我数了一下,总共的实际代码只有43行,如果你电脑已经安装了python 和 pyqt4 , 你已经可以用python环境运行它: pyhon VerySimpleWebBrowser 。下载地址: http://www.binpress.com/app/verysimplewebbrowser/279
好了,需要的东西就这么多,其实都是组装别人的东西,我没有自己写一行代码。
3.制作过程
安装 python 环境
这步就不说了~
安装 PyQt
这步也是一顿下一步~没什么说的
安装 pywin32
也是一顿下一步~
安装 pyinstaller
这个东西下载的是源码,我先 python setup.py install 了一下,其实我也不太清楚这步有没有必要,因为最后还是要到它的文件夹下利用 pyinstaller.py这个文件。
安装 UPX
这步其实就是像我上面说的,把下载后的文件 copy 到 PyInstaller的文件目录下,(放在和 pyinstaller.py 同 一个目录)
打包 VerySimpleWebBrowser.py
将 VerySimpleWebBrowser.py 也 copy 到 pyinstaller.py 的同目录下。在命令行下切换到此目录,运行 :
python pyinstaller.py -F -w VerySimpleWebBrowser.py
如果没有问题的话,现在已经生成了 VerySimpleWebBrowser.exe,这里有两个选项, -F 表示将所有文件都打包到 exe 中, -w 表示用窗口显示。
最终的结果如下:
稍微包装一下之后就可以作为展现js的本地客户端使用(图可以动哦~):
3.总结
整个过程其实就是个拼装过程,只要细心些就可以了~ 大家感受一下 python 的强大与便捷吧!
4.附录
最后我把 VerySimpleWebBrowser.py 的源代码贴出来吧~让大家看看它是有多么简单!
"""********************* VerySimpleWebBrowser ************************This is a Very Simple Web Browser implemented over Qt and QtWebKit.More info on: https://codescience.wordpress.com/author: Juan Manuel Garcia <jmg.utn@gmail.com>*******************************************************************
"""import sys
from PyQt4 import QtCore, QtGui, QtWebKitclass Browser(QtGui.QMainWindow):def __init__(self):"""Initialize the browser GUI and connect the events"""QtGui.QMainWindow.__init__(self)self.resize(800,600)self.centralwidget = QtGui.QWidget(self)self.mainLayout = QtGui.QHBoxLayout(self.centralwidget)self.mainLayout.setSpacing(0)self.mainLayout.setMargin(1)self.frame = QtGui.QFrame(self.centralwidget)self.gridLayout = QtGui.QVBoxLayout(self.frame)self.gridLayout.setMargin(0)self.gridLayout.setSpacing(0)self.horizontalLayout = QtGui.QHBoxLayout()self.tb_url = QtGui.QLineEdit(self.frame)self.bt_back = QtGui.QPushButton(self.frame)self.bt_ahead = QtGui.QPushButton(self.frame)self.bt_back.setIcon(QtGui.QIcon().fromTheme("go-previous"))self.bt_ahead.setIcon(QtGui.QIcon().fromTheme("go-next"))self.horizontalLayout.addWidget(self.bt_back)self.horizontalLayout.addWidget(self.bt_ahead)self.horizontalLayout.addWidget(self.tb_url)self.gridLayout.addLayout(self.horizontalLayout)self.html = QtWebKit.QWebView()self.gridLayout.addWidget(self.html)self.mainLayout.addWidget(self.frame)self.setCentralWidget(self.centralwidget)self.connect(self.tb_url, QtCore.SIGNAL("returnPressed()"), self.browse)self.connect(self.bt_back, QtCore.SIGNAL("clicked()"), self.html.back)self.connect(self.bt_ahead, QtCore.SIGNAL("clicked()"), self.html.forward)self.connect(self.html, QtCore.SIGNAL("urlChanged(const QUrl)"), self.url_changed)self.default_url = "http://codescience.wordpress.com/"self.tb_url.setText(self.default_url)self.browse()def browse(self):"""Make a web browse on a specific url and show the page on theWebview widget."""url = self.tb_url.text() if self.tb_url.text() else self.default_urlself.html.load(QtCore.QUrl(url))self.html.show()def url_changed(self, url):"""Triggered when the url is changed"""self.tb_url.setText(url.toString())if __name__ == "__main__":app = QtGui.QApplication(sys.argv)main = Browser()main.show()sys.exit(app.exec_())
转载于:https://my.oschina.net/mayepythoner/blog/298503
利用 python 的各种开源工具自制浏览器相关推荐
- python制作软件excel_利用Python制作一个 截图+Excel操作浏览器小工具
代码如下: GetData.py import xlrd class ReadExcel(): def __init__(self,file): self.open_excel = xlrd.open ...
- python制作小工具_利用Python制作翻译小工具
话不多说,直接上代码. Component文件: # coding:utf-8 from tkinter import * from tkinter import ttk from tkinter i ...
- python制作软件excel,利用Python制作Excel对比工具
目前功能还不完善,只能对比第一个sheet的内容,代码如下: # -*- coding: utf-8 -*- # 博客园 C丶小明 import xlrd,time from docx import ...
- 求助:利用Python制作Excel对比工具
需求:excel的内容是关于人员的项目成绩信息.每个excel中的项目成绩格式一致,人数可能不一致.选择任意两个excel文件,通过A列的姓名,匹配预设规则1或2,比较每个人在两个excel中各个项目 ...
- iframe 自动登录_安阳联通利用python实现三集中未反馈工单自动提取
安阳联通讯(云网运营中心:刘红民.徐路法)安阳联通逻辑团队自主研发的<三集中未反馈工单自动提取>项目经过三个多月的上线运行取得了成效,三集中考核指标"销障及时率"安阳已 ...
- 《财富》500 强企业要求 curl 开源工具作者提供免费及时的支持;基于Chromium的Edge浏览器正在整合文本预测功能 | 开源日报
整理 | 宋彤彤 责编 | 屠敏 开源吞噬世界的趋势下,借助开源软件,基于开源协议,任何人都可以得到项目的源代码,加以学习.修改,甚至是重新分发.关注「开源日报」,一文速览国内外今日的开源大事件吧! ...
- python推箱子小游戏_小伙利用Python自制一个推箱子小游戏!
原标题:小伙利用Python自制一个推箱子小游戏! 导语 月初更波python制作小游戏系列吧用python写了个推箱子小游戏,在这里分享给大家,让我们愉快地开始吧 小伙利用Python自制一个推箱子 ...
- 自制开源的安卓浏览器
开源的安卓浏览器 自制开源的安卓浏览器 一,Via浏览器,总分:21 二,Ninja浏览器,总分:28 三,168浏览器,总分:29 自制开源的安卓浏览器 当今各种广告和自媒体无聊信息充斥网络,大量的 ...
- 干货 | 《利用Python进行数据分析》资料开源下载
今天要跟大家分享的是数据分析领域的必备书籍之一的<利用Python进行数据分析>第二版.英文名为 Python for Data Analysis. 本书作者Wes McKinney 资深 ...
最新文章
- mybaits二十八:逆向工程
- linux03-用户与组
- Pandas简明教程:四、Pandas数据索引方式
- 真实HDFS集群启动后master的jps没有DataNode
- 阅读react-redux源码(五) - connectAdvanced中store改变的事件转发、ref的处理和pure模式的处理
- java大神请出来_求java大神,请分析以下代码,写出执行结果,并解释每行结果输出的原因。...
- 【计算机就业-银行】校招想去银行该怎么准备
- Redmi Note 10配备NFC 3.0功能:首次支持封闭式门卡
- vue 绑定 class 和 内联样式(style)
- ECharts实战教程
- 基于jsp+mysql+Spring+SpringMVC+mybatis的ssm乐轩公司订餐系统
- PHP开源公司订餐系统Food Online System Version1.6
- linux系统etc什么意思,etc.是什么意思 linux下的etc是什么意思
- 用shapely判断两个图形的包含相交关系
- openoffice java linux 安装_linux环境下安装 openOffice 并启动服务 的方法
- transform.position 绝对位置与相对位置
- Unity DOTS 介绍
- 贝叶斯决策理论(三):最小最大决策、序贯分类
- led驱动电源初学者必看_初学者:如何在Windows 8中查看Metro应用程序的已用驱动器空间...
- 这个应该狠狠打击了,淘宝拟禁止好评返现引导买家刷好评
热门文章
- python课堂笔记手抄图片_超简单又漂亮的手抄报图片
- 微信小程序-canvas绘制文字实现自动换行
- matlab训练神经网络模型并导入simulink详细步骤
- vscode如何找letax模板_一直努力却找不到变美思路?韩国新一代「整容模板」,教你如何提高美商、科学变美!...
- 安装python3.8.0步骤_python3.8.0安装教程_后端开发
- php内核函数手册,深入理解PHP内核(五)函数的内部结构,深入理解内部结构
- 【Socket网络编程】5.单播、多播(组播)、广播
- 图解Android Studio 2.0安装步骤
- Java并发编程:Synchronized底层优化(偏向锁、轻量级锁)
- Java 动态代理机制分析及扩展,第 1 部分