写一个js实现的,WEB自动化、数据采集、同大家分享
思路:js创建个InternetExplorer.Application对象,将DocumentComplete事件绑到一个function,在这个function里将额外的本地jQuery(jQuery名称在脚本里已全部替换为Nop)加载到Document里。并将常用的window、document、Script、$(JQuery)导出到脚本里。这样就可以像前端开发一样可以使用jQuery去操作Dom了,也可以用ajax去采集数据了。之前是用vbs写的,最后用js,是因为js可以很好融合到jQuery。
目录里有如下几个文件
│Test2.js ---脚本主要在这里面些
│1.xlsx ---存放采集到的数据
├─Lib
│ DataLib.js--- 数据处理,包含几json2csv、json2xml、xml2csv、xml2json等函数
│ ExcelLib.js--- DataLib扩展,处理Excel
│ IELib.js ---绑定DocumentComplete,变量导出
│ jquery.alerts.js---在脚本运行中提供用户交互
│ nop-1.8.0.js---修改名称后的jQuery1.8.0
其中Test2.js就是一个Demo,就是一个采集例子,双击运行或cscript Test2.js运行test2.js,输入打开一个网站,输入提示的验证码,就会对采集的数据录入到Excel中
if(WScript.FullName.substr(WScript.FullName.length-11,11) != 'cscript.exe'){
WScript.CreateObject("Wscript.Shell").Run('cscript //e:javascript "' + WScript.ScriptFullName + '"');
WScript.Quit();
}
scriptpath = WScript.ScriptFullName.substring(0,WScript.ScriptFullName.lastIndexOf("\\"));
function include(f){
var p = "";
if(f.indexOf(":")!=1) p = scriptpath + "\\Lib\\";
eval(WScript.CreateObject("Scripting.FileSystemObject").OpenTextFile(p + f).ReadAll());
}
//#################### 以上固定无需修改。########################
var username = "minyihua";
var password = "baggio919871020";
include("IELib.js");
InitWebBower("http://chuanbo.weiboyi.com/");
doLoopEvents(); // 代码执行到此处将进入事件循环,不在向下执行;
// ###############################################################
function loadComplete(URL){
if(/baidu/.test(URL)){
print('百度');
}else if( PageNo == 10 ){
print('第10个页面处理');
}else if("http://chuanbo.weiboyi.com/" == URL ){
$("#tonggao_qd").click();
$("#username").attr("value",username);
$("#password").attr("value",password);
print(window.ss);
InputBox("输入验证码:",function(v){
if(null != v){
$("#piccode").attr("value",v);
$("#login-submit").click();
}
});
}else if("http://chuanbo.weiboyi.com/hwreservation/account" == URL){
var tkv = $("#web_csrf_token").val();
var n;
var url;
//include("DataLib.js");
include("ExcelLib.js");
var rline = 2;
DataLib.initExcel('1.xlsx');
for (n=0;n<90 ;n++)
{
url = '/hwreservation/account/list/requirement_id/?web_csrf_token=' + tkv + '&start=' + n*100 + '&limit=100';
$.ajaxSetup({async: false});
getJson(url,function(data){
DataLib.json2range(data.data.list,['weibo_name','url','followers_count','external_tweet_price','location','audience_gender','hand_tags','professions','reservation_notice','cooperation_index','posts_avgretweet_count','posts_avgcomment_count'],'A'+(n*100+rline) );
});
print('采集数据:' + ((n+1)*100) + '条 ... ');
}
isComplete = true;//将此全局变量设置为true后将会退出脚本
}else{
//ie.document.Script.execScript("var hhh = {t:5};var backfunc = function(f){f(hhh);}");
//window.backfunc(function(v){
// WScript.Echo(v.t);
//});
}
}
高大上 使用中发现VBSEDIT可以调试js代码,顿时很爽。 顶~~~~
页:
[1]