当前位置: 首页 > news >正文

深圳网站程序开发网站导航栏的设计与实现

深圳网站程序开发,网站导航栏的设计与实现,网站增值业务,品牌推广费用预算概要应同学邀请#xff0c;演示如何使用 PyQt5 内嵌浏览器浏览网页#xff0c;并注入 Javascript 脚本实现自动化操作。下面测试的是一个廉价机票预订网站(http://www.flyscoot.com/)#xff0c;关键点如下使用 QWebEngineView 加载网页#xff0c;并显示进度。在默认配置(…概要应同学邀请演示如何使用 PyQt5 内嵌浏览器浏览网页并注入 Javascript 脚本实现自动化操作。下面测试的是一个廉价机票预订网站(http://www.flyscoot.com/)关键点如下使用 QWebEngineView 加载网页并显示进度。在默认配置(QWebEngineProfile)中植入 Javascript 内容这样脚本会在所有打开的网页中执行不论跳转到哪个网址。Javascript 脚本使用网址中的路径名判断当前网页位置从而决定执行哪种操作。python 代码示例#!/usr/bin/env python3# -*- coding: utf-8 -*-使用 PyQt5 内嵌浏览器浏览网页并注入 Javascript 脚本实现自动化操作。import osimport sysfrom datetime import datetimefrom PyQt5.QtWidgets import (QWidget, QApplication, QVBoxLayout, QHBoxLayout,QDesktopWidget, QTextEdit, QLabel, QLineEdit, QPushButton,QFileDialog, QProgressBar,)from PyQt5.QtCore import QUrl, pyqtSlotfrom PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEngineProfile, QWebEngineScript, QWebEnginePageclass Browser(QWidget):def __init__(self):super().__init__()self.init_ui()# 脚本self.profile QWebEngineProfile.defaultProfile()self.script QWebEngineScript()self.prepare_script()def init_ui(self):self.webView QWebEngineView()self.logEdit QTextEdit()self.logEdit.setFixedHeight(100)self.addrEdit QLineEdit()self.addrEdit.returnPressed.connect(self.load_url)self.webView.urlChanged.connect(lambda i: self.addrEdit.setText(i.toDisplayString()))self.jsEdit QLineEdit()self.jsEdit.setText(inject.js)loadUrlBtn QPushButton(加载)loadUrlBtn.clicked.connect(self.load_url)chooseJsBtn QPushButton(选择脚本文件)chooseJsBtn.clicked.connect(self.choose_js_file)# 导航/工具top QWidget()top.setFixedHeight(80)topBox QVBoxLayout(top)topBox.setSpacing(0)topBox.setContentsMargins(5, 0, 0, 5)progBar QProgressBar()progBox QHBoxLayout()progBox.addWidget(progBar)topBox.addLayout(progBox)naviBox QHBoxLayout()naviBox.addWidget(QLabel(网址))naviBox.addWidget(self.addrEdit)naviBox.addWidget(loadUrlBtn)topBox.addLayout(naviBox)naviBox QHBoxLayout()naviBox.addWidget(QLabel(注入脚本文件))naviBox.addWidget(self.jsEdit)naviBox.addWidget(chooseJsBtn)topBox.addLayout(naviBox)self.webView.loadProgress.connect(progBar.setValue)# 主界面layout QVBoxLayout(self)layout.addWidget(self.webView)layout.addWidget(top)layout.addWidget(self.logEdit)self.show()self.resize(1024, 900)self.center()def center(self):qr self.frameGeometry()cp QDesktopWidget().availableGeometry().center()qr.moveCenter(cp)self.move(qr.topLeft())pyqtSlot()def load_url(self):url self.addrEdit.text().strip()if not url.lower().startswith(http://) \and not url.lower().startswith(https://):url http://{}.format(url)self.load(url)pyqtSlot()def choose_js_file(self):f, _ QFileDialog.getOpenFileName(filterJavascript files(*.js))if os.path.isfile(f):self.jsEdit.setText(f)self.prepare_script()def prepare_script(self):path self.jsEdit.text().strip()if not os.path.isfile(path):self.log(invalid js path)returnself.profile.scripts().remove(self.script)with open(path, r) as f:self.script.setSourceCode(f.read())self.profile.scripts().insert(self.script)self.log(injected js ready)def log(self, msg, *args, **kwargs):m msg.format(*args, **kwargs)self.logEdit.append({} {}.format(datetime.now().strftime(%H:%M:%S), m))def load(self, url):self.log(floading {url})self.addrEdit.setText(url)self.webView.load(QUrl(url))if __name__ __main__:app QApplication(sys.argv)b Browser()b.load(http://www.flyscoot.com/)sys.exit(app.exec_())Javascript 脚本示例// 简单起见这里只演示部分页面脚本内容摘自 Heng丶原贴文。function handle(path) {// 首页if (path /zh) {document.getElementsByClassName(radio-inline)[1].click();document.getElementById(oneway_from).value广州 (CAN);document.getElementById(oneway_to).value新加坡 (SIN);document.getElementById(oneway_departuredate).value2018年9月10日;document.getElementsByClassName(btn--booking)[1].click();return;}// 选择航班if (path /Book/Flight) {document.getElementsByClassName(price--sale)[0].click();document.getElementsByClassName(heading-4)[0].click();document.getElementsByClassName(btn-submit)[0].click();return;}// 乘客信息if (path /BookFlight/Passengers) {document.getElementsByClassName(fname1)[0].value 匿名;}}let host document.location.hostname;if (host.endsWith(.flyscoot.com)) {handle(document.location.pathname);}总结以上就是这篇文章的全部内容了希望本文的内容对大家的学习或者工作具有一定的参考学习价值谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接
http://www.zqtcl.cn/news/514716/

相关文章:

  • 网站维护报价单国外 做励志视频的网站
  • 用源码做自己的网站公司网站建设哪家公司好
  • 网站运营做seohtml前端网站开发PPT
  • 上海网站定制设计图wordpress网站在线安装
  • 互动网站的核心技术wordpress不用插件
  • 厦门市建设工程交易中心网站怎么自己做游戏软件的app
  • 网站论文参考文献人力资源公司名称大全简单大气
  • 射阳做企业网站哪家好wordpress 进销存
  • 青海个人旅游网站建设wordpress用户名密码加密方式
  • 安徽平台网站建设找哪家wordpress首页加登录
  • 雅安市住房和城乡建设局网站湖南全程电子化服务平台官网
  • dw做的上传网站打不开网页制作培训价格
  • 工程网站怎么做广州做网站平台
  • 成都网站建设 全美深圳定制网站建设
  • 邢台网站建设与制作陕西高速公路建设集团网站
  • 太原 招聘 网站建设 技术经理关于 建设 二级网站
  • 如何做网站店铺的模板著名的响应式网站有哪些
  • 相城区建设网站做网站 设计师很
  • python网站开发好吗广州软件外包
  • 山东能源集团 网站建设对网站建设功能的情况说明
  • 网站设计个人各种类型网站建设口碑好
  • 西安巨久科技网站建设嘚嘚笔记 wordpress主推
  • 杭州利兴建设官方网站上海专业网站建设费
  • 自适应网站制作费用中国建设网官方网站企业登录
  • h5网站和传统网站区别电子商务主要学什么就业方向及前景
  • 凡科建站弊端各学院二级网站建设通报
  • 做网站怎么注册营业执照民制作网站哪家便宜
  • 临沂做进销存网站推广软件公司
  • 网站前端建设唐山网站建设托管
  • 做效果图有哪些网站seo怎么做关键词排名