⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 quarry.js

📁 CallSun 人才招聘求职系统 V2.20
💻 JS
📖 第 1 页 / 共 2 页
字号:
        queryString = queryString.replace(/&/g,"|||");
        Ajax.RequestUrl = UrlTransfer + quarryUrl + "&QueryString=" + queryString + "&date=" + (new Date()).getTime() + "&Method=" + quarryMethod ;
    }
    else
    {
        Ajax.RequestUrl = UrlTransfer + quarryUrl + queryString + "?date=" + (new Date()).getTime() + "&Method=" + quarryMethod ;
    }
    
    
 //   Ajax.RequestUrl = QuarryUrl + "?" + queryString;
    Ajax.Method = "get";
    Ajax.IsAsyn = true;
    Ajax.StateChangeEvent = XmlHttpQuarryStateChange;
//    AddLog("--发送采集请求,等待服务器返回");
    Ajax.SendRequest();
}

function XmlHttpQuarryStateChange()
{
    if (QuarryState == 0)
    {
        return;
    }
//    AddLog("--服务器回应代码:[" + Ajax.XmlHttp.readyState + "]");
    if (Ajax.XmlHttp.readyState == 4)
    {
	    if (Ajax.XmlHttp.status == 200)
	    {
//	        AddLog("--分析返回数据,获取数据字段");
		    var htmlText = Ajax.XmlHttp.responseText;
		    QuarrySummary(htmlText);
		    Ajax = null;
            CurrentPercent += (PagePercent / DataList.rows.length);
            SetProcessBar();
	    }
	    else
	    {
            var row = DataList.rows[rowIndex];
            row.style.backgroundColor = "#FF2200";
	        AddLog("--操作失败。错误代码为:[" + Ajax.XmlHttp.status + "]," + Ajax.XmlHttp.statusText);
	    }
	    CurrentRowIndex++;

	    if (CurrentRowIndex < DataList.rows.length)
	    {
//	        AddLog("--------------进行下一条记录采集---------------");
	        window.setTimeout("Quarry(" + CurrentRowIndex + ")",10);
	    }
	    else
	    {
	        AddLog("保存第" + PageIndex + "页采集数据");
	        SendQuarryResult();
	    }
    }
}

function QuarrySummary(htmlText)
{
    var dataRow = new DataRow();
    for (var i = 0; i < quarryColumnList.length; i++)
    {
        var quarryColumn = new QuarryColumn();
        quarryColumn.Id = quarryColumnList[i].Id;
        quarryColumn.Value = GetColumnValue(quarryColumnList[i],htmlText);
        dataRow.Values[i] = quarryColumn;
    }
    DataRowList.push(dataRow);
}

function GetColumnValue(quarryColumn,htmlText)
{
//    if (htmlText.length > 11000)
//    {
//        var test = htmlText.substr(11079);
//        for (var i = 0; i < quarryColumn.LeftChars.length; i++)
//        {
//            if (test.charAt(i) != quarryColumn.LeftChars.charAt(i))
//            {
//                alert(i);
//            }
//        }
//    }
    var result = " ";
    var indexBegin = htmlText.indexOf(quarryColumn.LeftChars);
    if (indexBegin != - 1)
    {
        indexBegin += quarryColumn.LeftChars.length;
        var indexEnd = htmlText.indexOf(quarryColumn.RightChars, indexBegin);
        if (indexEnd != -1)
        {
            result = htmlText.substr(indexBegin,indexEnd - indexBegin);
            if (result.trim() == "")
            {
                result = " ";
            }
        }
    }
    return result;
}

function GetQuarryResult()
{
    var result = new Array();
    result[result.length] = "<data>";
    if (DataRowList != null)
    {
        var lastRowIndex = DataRowList.length - 1;
        var lastColumnIndex = quarryColumnList.length - 1;
        var rowCount = DataRowList.length;
        BatchSaving = (rowCount > BatchCount)
        if (BatchSaving)
        {
            rowCount = BatchCount;
        }
        for (var i = 0; i < rowCount; i++)
        {
            result[result.length] = "<row>";
            for (var j = 0; j < quarryColumnList.length; j++)
            {
                result[result.length] = "<col>";
                result[result.length] = "<id>";
                result[result.length] = DataRowList[i].Values[j].Id;
                result[result.length] = "</id>";
                result[result.length] = "<value><![CDATA[";
                result[result.length] = DataRowList[i].Values[j].Value;
                result[result.length] = "]]></value>"
                result[result.length] = "</col>";
            }
            result[result.length] = "</row>";
        }
        if (BatchSaving)
        {
            BatchIndex++;
            DataRowList.splice(0,BatchCount);
        }
        if (BatchIndex > 0)
        {
            if (!BatchSaving)
            {
                BatchIndex++;
            }
            AddLog("数据量大,正进行分批保存。每批" + BatchCount + "条记录,当前第" + BatchIndex + "批");
        }
    }
    result[result.length] = "</data>";
    if (!BatchSaving)
    {
        DataRowList.Clear();
    }
    return result.join("");
}

//function GetQuarryResult()
//{
//    var result = "<data>";
//    if (DataRowList != null)
//    {
//        var lastRowIndex = DataRowList.length - 1;
//        var lastColumnIndex = quarryColumnList.length - 1;
//        for (var i = 0; i < DataRowList.length; i++)
//        {
//            result += "<row>";
//            for (var j = 0; j < quarryColumnList.length; j++)
//            {
//                result += "<col>";
//                result += "<id>";
//                result += DataRowList[i].Values[j].Id;
//                result += "</id>";
//                result += "<value><![CDATA[";
//                result += DataRowList[i].Values[j].Value;
//                result += "]]></value>"
//                result += "</col>";
//                
//            }
//            result += "</row>";
//        }
//    }
//    result += "</data>";
//    DataRowList.Clear();
//    return result;
//}

function SendQuarryResult()
{
    if (QuarryState == 0)
    {
        return;
    }
    var data = GetQuarryResult();
    Ajax = new AjaxClass();
    Ajax.RequestUrl = "SaveData.aspx?date=" + new Date().getTime();
    Ajax.Content = "QuarryItemId=" + document.getElementById("QuarryItemId").value + "&data=" + escape(data);
    Ajax.Method = "post";
    Ajax.IsAsyn = true;
    Ajax.ContentType = "application/x-www-form-urlencoded";
    Ajax.StateChangeEvent = XmlHttpSaveDataStateChange;
    AddLog("发送保存请求,等待服务器回应");
    Ajax.SendRequest();
    CurrentPercent += PerPercent * 0.125;
    SetProcessBar();    
}

function XmlHttpSaveDataStateChange()
{
    if (QuarryState == 0)
    {
        return;
    }
//    AddLog("服务器回应代码:[" + Ajax.XmlHttp.readyState + "]");
    if (Ajax.XmlHttp.readyState == 4)
    {
	    if (Ajax.XmlHttp.status == 200)
	    {
	        var message = Ajax.XmlHttp.responseText;
	        if (message.indexOf("操作失败") < 0)
	        {
		        AddLog("操作完成。" + message);
		        Ajax = null;
                CurrentPercent += PerPercent * 0.125;
                SetProcessBar();    
            }
            else
            {
                ErrorProcess();
            }
	    }
	    else
	    {
                ErrorProcess();
	    }
	    if (!ErrorPass)
	    {
	        return;
	    }
	    if (BatchSaving)
	    {
	        AddLog("成功保存第" + BatchIndex + "批数据");
	        window.setTimeout("SendQuarryResult()",10);
	    }
	    else
	    {
	        BatchIndex = 0;
            if (AllowPaging)
            {
                CurrentRowIndex = 0;
                PageIndex++;
                if (PageIndex <= PageCount)
                {
                    AddLog("进行第" + PageIndex + "页采集准备");
                    window.setTimeout("QuarryDataList()",10);
                }
                else
                {
                    AddLog("完成采集");
                    alert("完成采集");
                }
            }
            else
            {
                AddLog("完成采集");
                alert("完成采集");
            }
        }
    }
}

function ErrorProcess()
{
    AddLog("操作失败。错误代码为:[" + Ajax.XmlHttp.status + "]," + Ajax.XmlHttp.responseText);
    if (!ErrorPass)
    {
        StopQuarry();
        alert("发生意外,请查看日志");
    }
}

function QuarryInnerPageStart()
{
    if (InnerPageParameterList != null)
    {
        if (InnerPageParameterList.length > 0)
        {
            AddLog("开始获取第[ " + RowIndex + " ]条记录职位列表");
            var queryString = InnerPageParameterList.shift();
            QuarryInnerPageDataList(queryString);
        }
        else
        {
            var t = 1;
        }
    }
}

function QuarryInnerPageDataList(queryString)
{
    if (QuarryState == 0)
    {
        return;
    }
    AddLog("初始化采集内页[" + queryString + "]信息");
    //ClearQuarryDataList();
    Ajax = new AjaxClass();
//    var queryString = PageParameterName + "=" + PageIndex; //+ "&date=" + new Date().getTime();
//    if (PageParameterOther != "")
//    {
//        quarryString += "&" + PageParameterOther;
//    }
//    if (TargetParameters != null)
//    {
//        queryString +=  "&" + TargetParameters;
//    }
//    queryString = queryString.replace(/&/g,"|||");

    if (QuarryUrlMode == "0")
    {
        Ajax.RequestUrl = UrlTransfer + QuarryUrl + "&QueryString=" + queryString + "&date=" + (new Date()).getTime() + "&Method=" + QuarryMethod;
    }
    else
    {
        Ajax.RequestUrl = UrlTransfer + QuarryUrl + queryString + "&date=" + (new Date()).getTime() + "&Method=" + QuarryMethod;
    }

    Ajax.Method = "get";
    Ajax.IsAsyn = true;
    Ajax.ContentType = "application/x-www-form-urlencoded";
    Ajax.StateChangeEvent = XmlHttpQuarryInnerPageDataListStateChange;
    AddLog("发送采集内页请求,等待服务器回应");
    Ajax.SendRequest();
//    CurrentPercent += PerPercent * 0.25;
//    SetProcessBar();
}

function XmlHttpQuarryInnerPageDataListStateChange()
{
    if (QuarryState == 0)
    {
        return;
    }
    AddLog("服务器回应代码:[" + Ajax.XmlHttp.readyState + "]");
    if (Ajax.XmlHttp.readyState == 4)
    {
//        CurrentPercent += PerPercent * 0.25;
//        SetProcessBar();
	    if (Ajax.XmlHttp.status == 200)
	    {
	        AddLog("分析服务器返回数据");
		    var dataBlock = Ajax.XmlHttp.responseText;
            //var dataBeginIndex = dataBlock.indexOf(DataBlockBegin) + DataBlockBegin.length + 1;
            //var dataEndIndex = DataPanelTemp.indexOf(DataBlockEnd, dataBeginIndex);
//            var dataBeginIndex = 0;
//            var dataEndIndex = dataBlock.length;
            
//            if ((dataBeginIndex == -1) || (dataEndIndex == -1))
//            {
//                alert("未能获取到数据块");
//                return;
//            }
            
//            DataPanelTemp = DataPanelTemp.substring(dataBeginIndex, dataEndIndex);
//		      CurrentPercent += PerPercent * 0.125;
//            SetProcessBar();
		    Ajax = null;
		    AddLog("创建采集列表");
            var datalist = GetParameters(dataBlock,InnerPageParameterBegin,InnerPageParameterEnd);
            if (datalist.length > 0)
            {
                AddQuarryRows(datalist);
            }
		    CurrentPercent += PerPercent * 0.125;
            SetProcessBar();
            AddLog("完成第[ " + RowIndex + " ]条记录职位列表获取[" + datalist.length + "]");
            RowIndex++;
            if (RowIndex == 78)
            {
                var t = 0;
            }
	    }
	    if (InnerPageParameterList.length > 0)
	    {
		    window.setTimeout("QuarryInnerPageStart()", 10);
		}
		else
		{
	        CurrentPercent += PerPercent * 0.125;
            SetProcessBar();
	        window.setTimeout("QuarryStart()", 10);
		}
    }
}

function GetParameters(dataBlock,parameterBegin,parameterEnd)
{
    var datalist = new Array();
    var indexBegin = 0;
    var indexEnd = 0;
    var count = 0;
    var flg = true;
    while (indexBegin < dataBlock.length)
    {
        indexBegin = dataBlock.indexOf(parameterBegin, indexBegin);
        indexEnd = indexBegin + parameterBegin.length;
        indexEnd = dataBlock.indexOf(parameterEnd,indexEnd);
        if ((indexBegin != -1) && (indexEnd != -1))
        {
            datalist[count] = dataBlock.substring(indexBegin + parameterBegin.length,indexEnd);
            indexBegin = indexEnd + parameterEnd.length;
            count++;
        }
        else
        {
            break;
        }
    }
    return datalist;
}

function AddQuarryRows(datalist)
{
    var tdTagName = "td";
    var trTagName = "tr";
    var inputTagName = "input";
    var rowId = "row";
    var chkId = "chk";
    var index = DataList.rows.length;
    for (var i = 0; i < datalist.length; i++)
    {
        var row = CreateElement(trTagName,rowId + index,null,null,null,null);
        var td0 = CreateElement(tdTagName,null,null,null,null,null);
        td0.innerText = index;
        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);        
        index++;   
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -