62,074
社区成员
发帖
与我相关
我的任务
分享
private void axWebBrowser2_DocumentComplete(object sender, AxSHDocVw.DWebBrowserEvents2_DocumentCompleteEvent e)
{
if(webSitePath!="")
{
object objDocument= (HTMLDocumentClass)axWebBrowser2.Document;
IHTMLElementCollection elementAll = ((HTMLDocumentClass)objDocument).getElementsByTagName("table");
//middleElementAll=elementAll;
int tableCount=elementAll.length;
#region 网址错误
try
{
if(tableCount!=tablecount)
{
getdata=true;
IOHelper.WriteLog("目标网址不正确,TABLE数量不一致:"+this.axWebBrowser2.LocationURL,"采集网址被更改");
return;
}
}
catch
{
IOHelper.WriteLog("网址错误时,对采集状态更改时发生错误!");
}
#endregion
XMLHelper xmlhelper=new XMLHelper(webSitePath);
//XMLHelper xmlhelper1=new XMLHelper("config.xml");
int Datascount=xmlhelper.GetXmlNodesCount("website");//获取要采集的数据集个数
for(int i=0; i<Datascount; i++)
{
getDataN0=i;
#region 获取数据集采集参数
int tableno=xmlhelper.GetInt("tableNo",i);
int trstatno=xmlhelper.GetInt("trstatNo",i);
int trendno=xmlhelper.GetInt("trendNo",i);
int tdstartno=xmlhelper.GetInt("tdstartNo",i);
int tdendno=xmlhelper.GetInt("tdendNo",i);
string className=xmlhelper.GetXmlData("dataSetName",i);
string pageTypeNext=xmlhelper.GetXmlData("PageTypeNext",i);//数据分页形式
bool isnextpage=false;
//是否需要查找下一页,false为不需要,true为需要
#endregion
#region
try
{
//根据配置的类名来反射相关的类,实现相应的采集与数据录入
IHTMLTable itable1=(IHTMLTable)elementAll.item(tableno,null);
middleTableData=((HTMLTableClass)itable1).innerText;
System.Type[] type=System.Reflection.Assembly.Load("WebSiteBLL").GetExportedTypes();
System.Reflection.Assembly AssemblyPath=System.Reflection.Assembly.Load("WebSiteBLL");
WebSiteBLL.InfoClass infoclass=(WebSiteBLL.InfoClass)AssemblyPath.CreateInstance("WebSiteBLL."+className);
DataTable dt=infoclass.GetDataDather(itable1,trstatno,trendno,tdstartno,tdendno,ref isnextpage,Oldtime,Nowtime);
if(isnextpage)
{
infoclass.WriteToServer(dt);
//需要分页的情况
try
{
string pageType=xmlhelper.GetXmlData("PageType",i);
string pageKey=xmlhelper.GetXmlData("PageKey",i);
int pageIndex=xmlhelper.GetInt("PageIndex",i);
IHTMLElementCollection elementAll2 = ((HTMLDocumentClass)objDocument).getElementsByTagName(pageType);//根据标识进行分割
int count =elementAll2.length;
int pageindex=-1;
for(int m=0; m<count ;m++)
{
IHTMLElement ihtmlelement=(IHTMLElement)elementAll2.item(m,null);
if(ihtmlelement.innerHTML!=null)
{
if((ihtmlelement.innerHTML).IndexOf(pageKey)!=-1)
{
pageindex++;
if(pageindex==pageIndex)
{
if(pageTypeNext=="DownloadComplete")
{
isDownComplete=true;
}
ihtmlelement.click();
return ;
}
}
}
else
{
}
}
IOHelper.WriteLog("严重的分页错误:并没有找到下一页按钮。","错误");
//改变采集状态
xmlhelperchange.SetXmlNodeValue(nowtimeString,"GatherTime",countnumchange);
xmlhelperchange.SetXmlNodeValue("1","GatDatherComplete",countnumchange);
xmlhelperchange.SetXmlNodeValue("0","NeedsGatDather",countnumchange);
getdata=true;
return;
}
catch(Exception ex)
{
IOHelper.WriteLog("分页错误:"+ex.Message);
xmlhelperchange.SetXmlNodeValue(nowtimeString,"GatherTime",countnumchange);
xmlhelperchange.SetXmlNodeValue("1","GatDatherComplete",countnumchange);
xmlhelperchange.SetXmlNodeValue("0","NeedsGatDather",countnumchange);
//无分页节点,无需分页
}
}
else
{
//不需要分页的情况
//改变采集状态
xmlhelperchange.SetXmlNodeValue(nowtimeString,"GatherTime",countnumchange);
xmlhelperchange.SetXmlNodeValue("1","GatDatherComplete",countnumchange);
xmlhelperchange.SetXmlNodeValue("0","NeedsGatDather",countnumchange);
infoclass.WriteToServer(dt);
getdata=true;
return;
}
}
catch(Exception ex)
{
getdata=true;
IOHelper.WriteLog("数据采集错误:"+ex.Message+"。出错文件:"+webSitePath);
return;
}
#endregion
}
}
}
#endregion