`
loven_11
  • 浏览: 59356 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

使用hta解析网页,并上传结果至FTP

阅读更多

HTA介绍详见http://en.wikipedia.org/wiki/HTML_Application

 

本文分三部分,记录了碰到的问题与解决方法

一、HTA编写。

利用HTA进行解析网页信息,类似的工具应该不少,之所以使用hta 主要是由于轻量级,容易执行。但是由于使用比较少,处理问题时碰到的问题比较多:

 

1. 判断网页是否打开(更多需求参照 selenium实现)

一般开发web页面时,常用的页面事件为body的onload,或者Jquery插件的$(document).ready(). 但是在HTA中你无法通过打开页面的body来注册事件,因为无法预知body对象是否已经创建或者onload结束了。下面是我的处理,

 

function doWaitPageLoad(objName,functionName){
	setTimeout("detectWaitPageLoad('"+objName+"','"+functionName+"')", 1000);
}
function detectWaitPageLoad(objName,functionName){
	var obj = execCmd(objName);
	if(obj.childwin && obj.childwin.document && obj.childwin.document.readyState=='complete'){
		execCmd(objName+'.'+functionName+'()');
	}
	else{
		setTimeout("detectWaitPageLoad('"+objName+"','"+functionName+"')",500);
	}
}
function execCmd(cmd){
	return eval("("+cmd+")");
}

 此处理的核心部分就是,

obj.childwin && obj.childwin.document && obj.childwin.document.readyState

obj.chidwin 就是你打开的窗口对象, obj.childwin = window.open(url, "childwin");

 

2. ActiveXObject调用

 

function saveFile(strFullPath, strContent) {
	var fso = new ActiveXObject( "Scripting.FileSystemObject" );
	var flOutput = fso.CreateTextFile( strFullPath, true );
	flOutput.Write( strContent );
	flOutput.Close();
}
function deleteFile(strFullPath){
	var deleteFileObject = new ActiveXObject( "Scripting.FileSystemObject" );
	if(deleteFileObject.FileExists( strFullPath)){
		delefilepath=deleteFileObject.GetFile(strFullPath);
		delefilepath.Delete ();
	}
}
function saveFileWithUTF(strFullPath,strContent){
	deleteFile(strFullPath);
	var fso = new ActiveXObject("adodb.stream");
	fso.Type = 2;
	fso.mode = 3;
	fso.charset = "utf-8";
	fso.open();
	fso.WriteText(strContent);
	fso.SaveToFile(strFullPath);
	fso.Close();
}
function uploadToFTP(){
	var shellScript = new ActiveXObject( "WScript.Shell" );
	//shellScript.Run("cmd.exe 'fileupload.bat'");
	shellScript.Run("fileuploadwithscriptftp.bat"); 
}

 1) 保存js文件,第一种方式 Scripting.FileSystemObject无法指定文件编码格式,然后换成了 adodb.stream定义成特定格式UTF-8编码进行保存文件

 

2)执行bat脚本使用WScript.Shell。

 

二、上传ftp

尝试了好几种方式,最终使用了破解付费软件才搞定:

1. 第一次使用MS-DOS的ftp, 结果因为ftp服务器使用的是PASV模式,无法建立数据通道

 

@echo open www.example.com>>t

@echo accountName>>t

@echo password>>t

@echo cd serverPath>>t

@echo ascii>>t

@echo literal pasv>>t

@echo put localfile>>t

@echo bye>>t

@ftp -i -s:t

@del t


2. 使用LFTP for window版本,结果可能是因为ftp server精致ssl连接导致还是上传失败,
XX.bat
lftp\lftp.exe -f yourscriptfile

yourscriptfile:
open -u 'accout name','password' ftp.example.com
cd yourserverpath
lcd localpath
mput *
quit

 

3. 最后使用ScriptFTP, 貌似很顺畅

XX.bat

ScriptFTP\ScriptFTP_console.exe upload.ftp

 

upload.ftp

 

# Connect to FTP server

OPENHOST("ftp.example.com","username","password")


# Change current remote directory to

CHDIR("/server path")


# Send all the files and subdirectories in C:\MyDir to the server

PUTFILE("dir\*.*",SUBDIRS)


# Transfer finished, close the connection

CLOSEHOST

 

三、添加至window tasks

待续....

 

 

分享到:
评论

相关推荐

    使用网页应用程序(HTA)开发简单串口控制软件

    在“使用网页应用程序(HTA)开发简单串口控制软件”的项目中,我们主要探讨的是如何利用HTA来实现对硬件设备的串口通信。串口,也称为COM端口,是计算机上一种常见的接口,用于与外部设备进行数据交换,如打印机、...

    HTA

    3. **权限和安全**:HTA享有比普通网页更高的权限,可以访问本地资源,但这也意味着它们可能成为恶意软件的目标。因此,开发者需要注意安全实践,避免潜在的安全风险。 4. **应用实例**:HTA可以用于创建各种桌面...

    HTA8506C-MH-002YY HTA8506C-MH+002YY HTA8506C-MD-002YY HTA8506C-M

    HTA8506C-M系列模块,包括HTA8506C-MH-002YY、HTA8506C-MH+002YY、HTA8506C-MD-002YY以及HTA8506C-MD+002YY,是海航信光电技术有限公司推出的一款高效能并行光收发一体模块。这些模块采用了LCC48封装方式,设计紧凑...

    HTA8506C4路并行光收发一体模块使用说明书.pdf

    ### HTA8506C 4路并行光收发一体模块知识点解析 #### 一、产品概述 HTA8506C是一款高性能的4路并行光收发一体模块,支持单路3.125Gbps的数据传输速率。该模块主要用于背板、高清音视频传输等并行光互连应用领域,...

    hta格式程序详解

    `<HTA:application>`标签是HTA中最关键的部分之一,它用于声明该文件为HTA应用,并设置应用的各种属性。下面详细介绍一些常用属性: - **ApplicationName**: 设置应用名称。 - **Border**: 定义窗口边框样式,默认...

    hta文件制作教程.7z

    8. **最佳实践**:保持HTA的安全性,限制不必要的权限,提供清晰的用户界面,并避免使用已废弃的技术。 通过这个"hta文件制作教程.7z"压缩包中的"1.hta"文件,你可以学习到如何构建基本的HTA应用,理解其工作原理,...

    HTA数据库操作

    在本教程中,我们将探讨如何在HTA中使用VBScript来操作Access数据库文件(.mdb)。Access数据库是Microsoft Office套件的一部分,提供了一个关系型数据库管理系统,用于存储和管理数据。 **VBScript与Access数据库*...

    好玩的小程序 用hta做的(非原创)

    【标题】:“好玩的小程序 用hta做的(非原创)” 【描述】:“好玩的小程序 用hta做的 好玩的小程序 用hta做的” 这个标题和描述提及的“好玩的小程序 ...同时,通过实践编写小型项目,加深对HTA的理解并提升技能。

    windows的hta很好玩

    charset=UTF-8">`,并设置`<hta:application>`标签定义应用的属性,如窗口大小、图标等。 - **JavaScript代码**:HTA的逻辑处理通常由JavaScript完成,包括与用户的交互、数据处理、系统访问等。 - **HTML和CSS**:...

    分享一个查看计算机各项信息的HTA | #hta

    在本案例中,这个HTA程序被设计用来获取并展示电脑的硬件和软件信息。 首先,我们需要理解HTA的基本结构。HTA文件通常包含HTML头部声明、脚本(通常是JavaScript)以及HTML元素。这些脚本可以利用ActiveXObject或...

    HTA定时关机

    与普通的网页不同,HTA不会受到浏览器安全限制,可以直接访问本地系统资源,因此非常适合创建类似定时关机这样的系统级工具。 VBScript是Windows环境中广泛使用的解释型脚本语言,它简化了编程过程,使得编写小型...

    HTA 正则测试工具

    在实际使用中,这个HTA正则测试工具对于程序员、数据分析人员、网站管理员等需要频繁处理文本和正则表达式的专业人士来说,是一个非常有价值的辅助工具。它简化了正则表达式的调试过程,提高了工作效率。通过熟练...

    微软windows脚本中心hta编程

    微软Windows脚本中心HTA(HTML应用程序)编程是一种在Windows环境中使用HTML、JavaScript或...了解并掌握HTA编程,可以帮助开发者快速构建定制化的本地应用程序,尤其在企业内部部署和系统管理领域有着广泛的应用。

    发来共享的HTA

    HTA Ajax

    HTA+EasyUI桌面程序

    对于初学者来说,这是一个很好的学习和实践项目,通过它可以深入理解HTA和EasyUI的结合使用,以及如何构建桌面级别的Web应用。而对于有经验的开发者,这个框架可以作为一个起点,快速搭建起自己的项目框架。

    一个产生上载列表的HTA代码

    一个产生上载列表的HTA代码,只需通过CSS即可调用.服务端代码需要自己提供.

    HTA 高温数据中心

    关于HTA高温数据的PPT,欢迎大家下载学习,有什么问题可以随时沟通

    HTA8533-MD-007YY_使用说明书_V1.1_20170302.pdf

    《HTA8533-MD-007YY 12 路并行光发射模块使用说明书》 本文档详细介绍了HTA8533,一款专为甚短距离并行多通道光互联数据通信设计的高性能12路LCC封装并行光发射模块。该模块的核心在于其在850nm中心波长下提供的10....

Global site tag (gtag.js) - Google Analytics