📄 quarry.js
字号:
// JScript 文件
var Ajax = null;
var CurrentRowIndex = 0;
var DataList = null;
var DataRowList = new Array();
var UrlTransfer = "Blank.aspx?Url=";
var PageIndex = 1;
var PageCount = 0;
var PageParameterName = null;
var PageParameterOther = null;
var AllowPaging = true;
var TargetUrl = null;
var TargetParameters = null;
var TargetMethod = null;
var QuarryUrlMode = null;
var QuarryUrl = null;
var QuarryMethod = null;
var DataBlockBegin = null;
var DataBlockEnd = null;
var ParameterBegin = null;
var ParameterEnd = null;
var ParameterBeginLength = 0;
var ParameterEndLength = 0;
var ProcessBar = null;
var Log = null
var Enter = "...\r\n";
var PagePercent = 0;
var Percent = 100.0;
var CurrentPercent = 0;
var PerPercent = 0;
var SaveLog = true;
var DataPanelTemp = null;
var QuarryState = 1;
var ErrorPass = true;
var IsQuarryInnerPage = "0";
var InnerPageQuarryMethod = null;
var InnerPageQuarryUrl = null;
var InnerPageQuarryUrlMode = null;
var InnerPageParameterBegin = null;
var InnerPageParameterEnd = null;
var InnerPageParameterList = null;
var RowIndex = 0;
var BatchSaving = false;
var BatchCount = 50;
var BatchIndex = 0;
//1,采集,0,停止采集
function PageInit()
{
DataList = document.getElementById("QuarryDataList");
PageCount = Math.floor(document.getElementById("PageCount").value) + PageIndex - 1;
PageParameterName = document.getElementById("PageParameterName").value;
PageParameterOther = document.getElementById("PageParameterOther").value;
AllowPaging = (document.getElementById("AllowPaging").value == "1");
TargetUrl = document.getElementById("TargetUrl").value;
var index = TargetUrl.indexOf("?");
if (index >= 0)
{
TargetParameters = TargetUrl.substr(index + 1);
TargetUrl = TargetUrl.substring(0,index);
}
else
{
TargetParameters = null;
}
TargetMethod = document.getElementById("TargetMethod").value;
QuarryUrlMode = document.getElementById("QuarryUrlMode").value;
QuarryUrl = document.getElementById("QuarryUrl").value;
QuarryMethod = document.getElementById("QuarryMethod").value;
DataBlockBegin = document.getElementById(document.getElementById("DataBlockBegin").value).value;
DataBlockEnd = document.getElementById(document.getElementById("DataBlockEnd").value).value;
ParameterBegin = document.getElementById(document.getElementById("ParameterBegin").value).value;
ParameterEnd = document.getElementById(document.getElementById("ParameterEnd").value).value;
ParameterBeginLength = ParameterBegin.length;
ParameterEndLength = ParameterEnd.length;
ProcessBar = document.getElementById("ProcessBarCtl");
Log = document.getElementById("LogCtl");
CurrentPercent = 0;
if (document.getElementById("AllowPaging").value == "0")
{
AllowPaging = false;
}
else
{
AllowPaging = true;
}
if (AllowPaging)
{
if (PageCount != 0)
{
PagePercent = Percent / (PageCount - PageIndex + 1);
}
else
{
PagePercent = Percent;
PageCount = PageIndex;
}
}
else
{
PagePercent = Percent;
PageCount = PageIndex;
}
PerPercent = PagePercent * 0.1;
PagePercent -= PerPercent;
ErrorPass = document.getElementById("ErrorContinue").checked;
IsQuarryInnerPage = document.getElementById("IsQuarryInnerPage").value;
InnerPageQuarryMethod = document.getElementById("InnerPageQuarryMethod").value;
InnerPageQuarryUrl = document.getElementById("InnerPageQuarryUrl").value;
InnerPageQuarryUrlMode = document.getElementById("InnerPageQuarryUrlMode").value;
InnerPageParameterBegin = document.getElementById(document.getElementById("InnerPageParameterBegin").value).value;
InnerPageParameterEnd = document.getElementById(document.getElementById("InnerPageParameterEnd").value).value;
BatchCount = GetFormValueAsInt("BatchCount",50);
}
function StopQuarry()
{
QuarryState = 0;
alert("已停止采集");
}
function StartQuarry()
{
QuarryState = 1;
PageIndex = GetFormValueAsInt("PageStart",1);
PageInit();
QuarryDataList();
}
function SetProcessBar()
{
var value = (Math.round(CurrentPercent * 100) / 100) + "%";
ProcessBar.style.width = value;
ProcessBar.innerText = value;
}
function AddLog(log)
{
if(Log.value.length > 10000)
{
Log.value = "";
}
var today = new Date();
Log.insertAdjacentText("beforeEnd",FillString(today.getMinutes() + ":" + today.getSeconds() + ":" + today.getMilliseconds(),"-",18) + "-" + log + Enter);
Log.doScroll("pageDown");
}
function FillString(value,fullStr,length)
{
while (value.length < length)
{
value += fullStr;
}
return value;
}
function Link()
{
this.LinkText = "";
this.LinkUrl = "";
this.LinkQueryString = "";
}
function Login()
{
Ajax = new AjaxClass();
Ajax.RequestUrl = document.getElementById("LoginUrl").value;
Ajax.Method = "post"
Ajax.IsAsyn = true;
Ajax.ContentType = "application/x-www-form-urlencoded";
Ajax.StateChangeEvent = XmlHttpLoginStateChange;
var parameters = document.getElementById("CtlLoginName").value + "=" + document.getElementById("LoginName").value;
parameters += "&" + document.getElementById("CtlPassword").value + "=" + document.getElementById("Password").value;
parameters += "&" + document.getElementById("CtlValidateCode").value + "=" + document.getElementById("ValidateCode").value;
parameters += "&" + document.getElementById("Parameters").value;
Ajax.Content = parameters;
Ajax.SendRequest();
}
function XmlHttpLoginStateChange()
{
if (Ajax.XmlHttp.readyState == 4)
{
if (Ajax.XmlHttp.status == 200)
{
alert("成功发出登录请求");
Ajax = null;
}
else
{
alert("登录失败。错误代码为:[" + Ajax.XmlHttp.status + "]," + Ajax.XmlHttp.statusText);
}
}
}
function QuarryDataList()
{
if (QuarryState == 0)
{
return;
}
AddLog("初始化采集第" + PageIndex + "页信息");
ClearQuarryDataList();
Ajax = new AjaxClass();
var queryString = PageParameterName + "=" + PageIndex;// + "&date=" + new Date().getTime();
if (PageParameterOther != "")
{
queryString += "&" + PageParameterOther;
}
if (TargetParameters != null)
{
queryString += "&" + TargetParameters;
}
queryString = queryString.replace(/&/g,"|||");
Ajax.RequestUrl = UrlTransfer + TargetUrl + "&QueryString=" + queryString + "&Method=" + TargetMethod;
// Ajax.RequestUrl = TargetUrl + "?" + PageParameterName + "=" + PageIndex + "date=" + new Date().getTime();
Ajax.Method = "get";
Ajax.IsAsyn = true;
Ajax.ContentType = "application/x-www-form-urlencoded";
Ajax.StateChangeEvent = XmlHttpQuarryDataListStateChange;
AddLog("发送采集请求,等待服务器回应");
Ajax.SendRequest();
CurrentPercent += PerPercent * 0.25;
SetProcessBar();
}
function XmlHttpQuarryDataListStateChange()
{
if (QuarryState == 0)
{
return;
}
// AddLog("服务器回应代码:[" + Ajax.XmlHttp.readyState + "]");
if (Ajax.XmlHttp.readyState == 4)
{
CurrentPercent += PerPercent * 0.25;
SetProcessBar();
if (Ajax.XmlHttp.status == 200)
{
// AddLog("分析服务器返回数据");
DataPanelTemp = Ajax.XmlHttp.responseText;
var dataBeginIndex = DataPanelTemp.indexOf(DataBlockBegin) + DataBlockBegin.length + 1;
var dataEndIndex = DataPanelTemp.indexOf(DataBlockEnd, dataBeginIndex);
if ((dataBeginIndex == -1) || (dataEndIndex == -1))
{
alert("未能获取到数据块");
return;
}
DataPanelTemp = DataPanelTemp.substring(dataBeginIndex, dataEndIndex);
CurrentPercent += PerPercent * 0.125;
SetProcessBar();
Ajax = null;
// AddLog("创建采集列表");
var datalist = GetParameters(DataPanelTemp,ParameterBegin,ParameterEnd);
if (IsQuarryInnerPage == "0")
{
GetQuarryDataList(datalist);
CurrentPercent += PerPercent * 0.125;
SetProcessBar();
window.setTimeout("QuarryStart()", 10);
}
else
{
InnerPageParameterList = datalist;
QuarryInnerPageStart();
}
}
else
{
AddLog("操作失败。错误代码为:[" + Ajax.XmlHttp.status + "]," + Ajax.XmlHttp.statusText);
if (ErrorPass)
{
CurrentPercent += PerPercent * 0.125;
SetProcessBar();
Ajax = null;
CurrentPercent += PerPercent * 0.125;
SetProcessBar();
if (AllowPaging)
{
CurrentRowIndex = 0;
PageIndex++;
if (PageIndex <= PageCount)
{
AddLog("进行第" + PageIndex + "页采集准备");
window.setTimeout("QuarryDataList()",10);
}
}
}
}
}
}
function ClearQuarryDataList()
{
while(DataList.rows.length > 0)
{
DataList.removeChild(DataList.rows[0]);
}
DataPanelTemp = null;
// BlankFrame.location.reload(true);
// Log.value = "";
}
function GetQuarryDataList(datalist)
{
if (QuarryState == 0)
{
return;
}
//ClearQuarryDataList();
// //link[0] 文本 link[1] 参数
// var datalist = GetParameters(DataPanelTemp,ParameterBegin,ParameterEnd);
// var datalist = new Array();
// var indexBegin = 0;
// var indexEnd = 0;
// var count = 0;
// var flg = true;
// while (indexBegin < DataPanelTemp.length)
// {
// indexBegin = DataPanelTemp.indexOf(ParameterBegin, indexBegin);
// indexEnd = indexBegin + ParameterBeginLength;
// indexEnd = DataPanelTemp.indexOf(ParameterEnd,indexEnd);
// if ((indexBegin != -1) && (indexEnd != -1))
// {
// datalist[count] = DataPanelTemp.substring(indexBegin + ParameterBeginLength,indexEnd);
// indexBegin = indexEnd + ParameterEndLength;
// count++;
// }
// else
// {
// break;
// }
// }
// var tdTagName = "td";
// var trTagName = "tr";
// var inputTagName = "input";
// var rowId = "row";
// var chkId = "chk";
if (datalist.length != 0)
{
// for (var i = 0; i < datalist.length; i++)
// {
// var row = CreateElement(trTagName,rowId + i,null,null,null,null);
// var td0 = CreateElement(tdTagName,null,null,null,null,null);
// td0.innerText = i;
// row.appendChild(td0);
//
// var td1 = CreateElement(tdTagName,null,null,null,null,null);
// td1.innerText = datalist[i];
// row.appendChild(td1);
//
// var td2 = CreateElement(tdTagName,null,null,null,null,null);
// var chkbox = CreateElement(inputTagName,chkId + i,i,null,null,"checkbox");
// td2.appendChild(chkbox);
// row.appendChild(td2);
//
// DataList.appendChild(row);
// }
AddQuarryRows(datalist);
}
else
{
alert("页数:【" + PageIndex + "】,未能采集到数据");
}
}
function DeleteRowBySelected()
{
var rowids = new Array();
var chklist = DataList.getElementsByTagName("input");
for(var i = 0; i < chklist.length; i++)
{
var obj = chklist[i];
if (obj.id.substr(0,3) == "chk")
{
if (obj.checked)
{
rowids.push(obj.id.substr(3));
}
}
}
for (var i = 0; i < rowids.length; i++)
{
var row = document.getElementById("row" + rowids[i]);
if (row != null)
{
DataList.removeChild(row);
}
}
}
function QuarryStart()
{
if (QuarryState == 0)
{
return;
}
if (DataList.rows.length > 0)
{
AddLog("开始采集记录");
CurrentRowIndex = 0;
Quarry(CurrentRowIndex);
}
}
function Quarry(rowIndex)
{
if (QuarryState == 0)
{
return;
}
AddLog("开始采集第[ " + rowIndex + " ]条记录");
var row = DataList.rows[rowIndex];
row.style.backgroundColor = "#E6E6F8";
Ajax = new AjaxClass();
var queryString = row.cells[1].innerText;
var quarryUrl = null;
var quarryMethod = null;
var mode = null;
if (IsQuarryInnerPage == "1")
{
quarryUrl = InnerPageQuarryUrl;
quarryMethod = InnerPageQuarryMethod;
mode = InnerPageQuarryUrlMode;
}
else
{
quarryUrl = QuarryUrl;
quarryMethod = QuarryMethod;
mode = QuarryUrlMode;
}
if (mode == "0")
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -