|
思路: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);
- //});
- }
- }
复制代码 |
|