亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? extract.cpp

?? 從網頁中提取內容
?? CPP
?? 第 1 頁 / 共 2 頁
字號:

//--------------------------------------------------------------------------------
// FUNCTION: 去除<>間的字符。
// IN      : strResult,以及分隔符。
// OUT     : 傳址
// AUTHOR  : 2006-05-21 Created by navy .
//           2006-05-25 Modified by navy .
// CALL    : funDelete(strResult,"<TD"); 
// NOTE    : Eg:<TD style="FONT-SIZE: 24pt" width="100%"> 變為:<TD>
//--------------------------------------------------------------------------------
void Extract::funDelete(string& strResult,string separator)
{
	string strTemp1,strTemp2;
	int nPos1,nPos2;
	int n1,n2;
	nPos1 = strResult.find(separator);
	nPos2 = strResult.find(">",nPos1);
	if ((nPos1 == -1) || (nPos2 == -1)) return; //如果沒有<或>,直接退出。
	
	n1 = funCountSymbol(strResult,nPos1,nPos2,"<"); //n1、n2至少等于1
	n2 = funCountSymbol(strResult,nPos1,nPos2,">");

	while (n1 != n2)
	{
		nPos2 = strResult.find(">",nPos2+1);
		n1 = funCountSymbol(strResult,nPos1,nPos2,"<");
		n2 = funCountSymbol(strResult,nPos1,nPos2,">");
	}

	if(nPos2 == -1) return;                      //注意:如果找不到,要返回。

	strTemp1=strResult.substr(0,nPos1);
	strTemp2=strResult.substr(nPos2+1);
	
	funDelete(strTemp2,separator);
	strResult=strTemp1+separator+">"+strTemp2;
}

//--------------------------------------------------------------------------------
// FUNCTION: 返回位置i,j間的symbol個數。
// IN      : 
// OUT     : 
// AUTHOR  : 2006-05-25 Created by navy .
// CALL    : int n = funCountSymbol(strResult,4,19,"<"); 結果n=4
// NOTE    : Eg:<TD><A<B<BR>>BC</B>>DD</A></TD> 變為:<TD>
//               0123456789012345678901234567890  
//                         1         2         3
//--------------------------------------------------------------------------------
int Extract::funCountSymbol(string strResult,int i,int j,string symbol)
{
	int nPos;
	int nCount = 0 ;
	nPos = strResult.find(symbol,i);
	while((nPos != -1) && (nPos <= j))
	{
		nCount ++ ; 
		nPos = strResult.find(symbol,nPos+1);
	}
	return nCount ; 
}

//--------------------------------------------------------------------------------
// FUNCTION: 去除<><>間的字符。
// IN      : strResult,以及分隔符。
// OUT     : 傳址
// AUTHOR  : 2006-05-22 Created by navy .
//           2006-05-29 Modified by navy .
// NOTE    : Eg:abc<SCRIPT language=JavaScript>……</SCRIPT>abc 變為:abcabc
// NOTE    : 存在嵌套的情況
//           abc<SCRIPT><SCRIPT>……</SCRIPT>……</SCRIPT>abc 變為:abcabc
//--------------------------------------------------------------------------------
void Extract::funDelete2(string& strResult,string separator,int nPos)
{
	string strTemp1,strTemp2;
	string sepa1 = "<"+separator ;
	string sepa2 = "</"+separator+">" ;
	int nPos1,nPos2;
	int n1,n2;
	
	nPos1=strResult.find(sepa1,nPos);
	nPos2=strResult.find(sepa2,nPos1);
	if ((nPos1 == -1) || (nPos2 == -1)) return; //如果沒有<或>,直接退出。

	n1 = funCountSymbol(strResult,nPos1,nPos2,sepa1);
	n2 = funCountSymbol(strResult,nPos1,nPos2+sepa2.length(),sepa2);

	while (n1 != n2)
	{
		nPos2 = strResult.find(sepa2,nPos2+1);
		n1 = funCountSymbol(strResult,nPos1,nPos2,sepa1);
		n2 = funCountSymbol(strResult,nPos1,nPos2+sepa2.length(),sepa2);
	}

	if(nPos2 == -1) return;                      //注意:如果找不到,要返回。

	strTemp1=strResult.substr(0,nPos1);
	strTemp2=strResult.substr(nPos2+sepa2.length());
	
	funDelete2(strTemp2,separator,0);
	strResult=strTemp1 + strTemp2 ;
}


//--------------------------------------------------------------------------------
// FUNCTION: 保留指定標簽之間的字符。
// IN      : strResult
// OUT     : strResult
// AUTHOR  : 2006-05-22 Created by navy .
//           2006-05-26 Modified by navy .
// NOTE    : Eg:<HTML><TD><FONT>a<A>b</A>c</FONT></TD></HTML> 變為:<TD>a<A>bc
// NOTE    : Eg:<TABLE <BR>><TD>a</TD></TABLE> 變為:_a (_表示空格)
//--------------------------------------------------------------------------------
void Extract::funKeepListLabel(string& strResult,int nPosOld)
{
	//string strUseful = "<TITLE>,<TR>,<TD>,<P>,<BR>,<DIV>"; 
	string strTemp1,strTemp2;
	string sepa;
	int nPos,nPos1,nPos2;
	int n1,n2;

	nPos1 = strResult.find("<"); 
	nPos2 = strResult.find(">",nPos1); 

	while ((nPos1 != -1) && (nPos2 != -1)) {
		sepa=strResult.substr(nPos1,3); 
		nPos=strUseful.find(sepa); 
		n1 = funCountSymbol(strResult,nPos1,nPos2,"<");
		n2 = funCountSymbol(strResult,nPos1,nPos2,">");
		while (n1 != n2)
		{
			nPos2 = strResult.find(">",nPos2+1);
			n1 = funCountSymbol(strResult,nPos1,nPos2,"<");
			n2 = funCountSymbol(strResult,nPos1,nPos2,">");
		}
		if(nPos2 == -1)                  //<TITLE>博客園 - webcool</</TITLE>
		{
			nPos2 = strResult.find(">",nPos1); 
		}
		strTemp1 = strResult.substr(0,nPos1); 
		strTemp2 = strResult.substr(nPos2+1); 
		funDelSideSpace(strTemp1);
		funDelSideSpace(strTemp2);
		if ( nPos != -1 ) 
		{
			if (sepa == "<TD") strTemp1 += " " ;       
			//else if (sepa == "<DI") strTemp1 += " " ;  //遇div,回車
			else strTemp1 += "<BR" ; 
		}
		strResult = strTemp1+strTemp2;
		nPos1=strResult.find("<",strTemp1.length()); 
		nPos2=strResult.find(">",strTemp1.length()); 
	}	
}


//--------------------------------------------------------------------------------
// FUNCTION: 更改擴展名。
// IN      : 網頁文件(*.htm/html)。
// OUT     : 原文件名,擴展名為txt。
// AUTHOR  : 2006-05-21 Created by navy .
// NOTE    : 
//--------------------------------------------------------------------------------
void Extract::funDestFilename(const char* filename,char* sResultFile) 
{
	strcpy(sResultFile,filename);
	unsigned int nLen=strlen(filename);
	if (filename[strlen(filename)-1] == 'l')     //.html
	{
		strncpy(sResultFile+nLen-5,".txt",10);
	}
	else                                         //.htm  
	{
		strncpy(sResultFile+nLen-4,".txt",10);
	}	
	sResultFile[nLen+4]=0;
}

//--------------------------------------------------------------------------------
// FUNCTION: 將strLine中的字符串strOld用strNew替換。
// IN      : 輸入一行
// OUT     : 替換后的行
// AUTHOR  : 2006-05-21 Created by navy .
// NOTE    : 
//--------------------------------------------------------------------------------
void Extract::funReplace(string& strLine,string strOld,string strNew)
{
	int nPos=0;
	while ((nPos=strLine.find(strOld)) != -1) {
 		strLine=strLine.substr(0,nPos)+strNew+strLine.substr(nPos+strOld.length());
	}
}

//--------------------------------------------------------------------------------
// FUNCTION: 將strLine中的字符串strOld用strNew替換。重載函數,處理寬字符。
// IN      : 輸入一行
// OUT     : 替換后的行
// AUTHOR  : 2006-05-21 Created by navy .
// NOTE    : 
//--------------------------------------------------------------------------------
void Extract::funReplace(wstring& strLine,wstring strOld,wstring strNew)
{
	int nPos=0;
	while ((nPos=strLine.find(strOld)) != -1) {
 		strLine=strLine.substr(0,nPos)+strNew+strLine.substr(nPos+strOld.length());
	}
}

//--------------------------------------------------------------------------------
// FUNCTION: 去除strLine兩邊的空格。
// IN      : strLine
// OUT     : strLine
// AUTHOR  : 2006-05-22 Created by navy .
// NOTE    : 
//--------------------------------------------------------------------------------
void Extract::funDelSideSpace(string& strLine)
{
	int nPos;
	if (strLine.empty()) return;
	nPos=strLine.find_first_not_of(" ");
	if ( nPos == -1 ) {
		strLine = "";
		return;
	}
	strLine=strLine.substr(nPos);
	nPos=strLine.find_last_not_of(" ");
	strLine=strLine.substr(0,nPos+1);
}

//--------------------------------------------------------------------------------
// FUNCTION: 去除以&開頭以;結束的字符串。
// IN      : strResult
// OUT     : strResult
// AUTHOR  : 2006-05-24 Created by navy .
//           2006-05-29 Modified by navy .
// NOTE    : 1."&nbsp;"-->" "   2."&lt;"-->"<"      3."&gt;"-->">"
//           4."&amp;"-->"&"    5."&quot;"-->"\"    6."&copy;"-->"(C)"
//           7."&reg;"-->"?"    8."&trade;"-->"TM"  9."&#8226;"-->"·"
//--------------------------------------------------------------------------------
void Extract::funDelBegAnd(string& strResult,int nPos) //從第nPos個位置開始
{
	//a&nbsp;&&nbsp;;;&nbsp;編輯
	string strTmp1,strTmp2;
	string strSymbol;
	int nPos1,nPos2;

	nPos1 = strResult.find("&",nPos);
	nPos2 = strResult.find(";",nPos1);
	while ((nPos1 != -1) || (nPos2 != -1)) 
	{
		strSymbol = strResult.substr(nPos1+1,nPos2-nPos1-1);
		if(strSymbol == "nbsp")       strSymbol = " ";
		else if(strSymbol == "lt")    strSymbol = "<";
		else if(strSymbol == "gt")    strSymbol = ">";
		else if(strSymbol == "amp")   strSymbol = "&";
		else if(strSymbol == "quot")  strSymbol = "\"";
		else if(strSymbol == "copy")  strSymbol = "(C)";
		else if(strSymbol == "reg")   strSymbol = "?";
		else if(strSymbol == "trade") strSymbol = "TM";
		else if(strSymbol == "#8226") strSymbol = "·";
		else
		{
			nPos1 = strResult.find("&",nPos1+1); //找下一個&
			nPos2 = strResult.find(";",nPos1);
			continue;
		}

		strTmp1 = strResult.substr(0,nPos1) ;
		strTmp2 = strResult.substr(nPos2 + 1) ;
		strResult = strTmp1 + strSymbol + strTmp2;
		
		nPos1 = strResult.find("&",strTmp1.length());
		nPos2 = strResult.find(";",nPos1);
	}	
}

//--------------------------------------------------------------------------------
// FUNCTION: 刪除無用鏈接(在<TR>和</TR>間除鏈接外,沒有其他內容)
// IN      : strResult
// OUT     : 傳址
// AUTHOR  : 2006-05-27 Created by navy .
// NOTE    : Eg:a<TR><TD><A>bc</A></TD></TR><TR><TD>d</TD></TR>e 變為:
//               a<TR><TD>d</TD></TR>e
//--------------------------------------------------------------------------------
void Extract::funDelUselessLink(string& strResult) 
{
	string strTmp1,strTmp2,strTmp3;
	int nPos1,nPos2;
	nPos1 = strResult.find("<TR");
	nPos2 = strResult.find("</TR>");
	while ((nPos1 != -1) && (nPos2 != -1)) {
		strTmp1 = strResult.substr(0,nPos1);
		strTmp2 = strResult.substr(nPos1,nPos2 - nPos1 + 5);
		strTmp3 = strResult.substr(nPos2 + 5);
		funDelete2(strTmp2,"A",0);               //刪除<A>與</A>間的內容
		funKeepListLabel(strTmp2,0);
		funReplace(strTmp2,"<BR","");
		funReplace(strTmp2," ","");
		if (strTmp2.empty())
		{
			strResult = strTmp1 + strTmp3 ; 
			nPos1 = strResult.find("<TR",strTmp1.length());
			nPos2 = strResult.find("</TR>",nPos1);
			continue;
		}

		nPos1 = strResult.find("<TR",nPos2 + 5);
		nPos2 = strResult.find("</TR>",nPos1);
	}
}

Extract::~Extract()
{

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩三级视频| 国产亚洲人成网站| 久久精品夜夜夜夜久久| 亚洲欧美日韩小说| 另类人妖一区二区av| 色婷婷久久99综合精品jk白丝| 日韩一区二区三区观看| 日韩毛片在线免费观看| 国产一区二区三区视频在线播放| 91国偷自产一区二区使用方法| 国产亚洲精品aa| 久久国产精品第一页| 欧美日韩激情在线| 亚洲综合男人的天堂| 高潮精品一区videoshd| 日韩精品一区二区三区视频| 亚洲第一会所有码转帖| 成人av网址在线| 国产亚洲成aⅴ人片在线观看| 日本中文字幕一区| 欧美日韩精品是欧美日韩精品| 亚洲天堂av一区| 成人av电影免费在线播放| 国产午夜精品久久久久久久| 裸体在线国模精品偷拍| 欧美一二区视频| 秋霞午夜av一区二区三区| 欧美日韩国产123区| 亚洲一区二区三区四区五区中文 | 中文一区在线播放| 国产曰批免费观看久久久| 日韩一卡二卡三卡| 九九视频精品免费| 精品国产乱码久久久久久牛牛| 伦理电影国产精品| 日韩欧美一区二区免费| 久久99这里只有精品| 精品国产乱码久久久久久久| 美国一区二区三区在线播放| 欧美一区二区二区| 国产专区欧美精品| 国产欧美精品一区二区色综合朱莉 | xvideos.蜜桃一区二区| 国产乱一区二区| 国产精品嫩草久久久久| 成人黄色免费短视频| 日韩理论片中文av| 欧美亚洲丝袜传媒另类| 日本欧美在线观看| 国产三级一区二区三区| www.欧美精品一二区| 一区二区三区日韩在线观看| 欧美日韩和欧美的一区二区| 久久精品二区亚洲w码| 国产色综合久久| 在线亚洲一区二区| 麻豆精品国产91久久久久久| 亚洲欧洲日韩在线| 成人免费在线观看入口| 中文字幕乱码日本亚洲一区二区 | 日韩av中文在线观看| 免费观看成人av| 亚洲欧美日韩国产另类专区| 国产精品网站在线| 午夜精品福利一区二区蜜股av| 中文字幕中文字幕中文字幕亚洲无线| 欧美福利一区二区| 精品国产百合女同互慰| 国产午夜久久久久| 亚洲国产成人av| 亚洲女同一区二区| 国产成人免费在线观看不卡| 欧美成人vps| 欧美日韩精品欧美日韩精品一综合| 欧美日韩一区精品| 蜜臀av一级做a爰片久久| 国产精品自拍av| 91免费看片在线观看| 九色综合国产一区二区三区| 国产在线精品免费av| 69久久99精品久久久久婷婷| 亚洲摸摸操操av| 欧美日韩日日摸| 精品一区二区三区香蕉蜜桃 | 亚洲精品日韩综合观看成人91| 色哟哟一区二区在线观看| 亚洲亚洲人成综合网络| 91精品国产综合久久精品app| 日韩精品电影在线观看| 日本一区二区三区国色天香| 粉嫩嫩av羞羞动漫久久久 | 欧美日韩在线电影| 日韩avvvv在线播放| 国产喷白浆一区二区三区| 欧美日韩成人综合在线一区二区| 美女视频一区二区三区| 亚洲欧美综合网| 国产亚洲福利社区一区| 欧美精品免费视频| 在线观看日韩精品| 99久久精品99国产精品| 成人手机电影网| 国产欧美日韩在线视频| 欧美另类videos死尸| 99天天综合性| av亚洲产国偷v产偷v自拍| 蜜臀va亚洲va欧美va天堂| 亚洲视频在线观看三级| 国产精品久久免费看| 欧美mv日韩mv| 久久综合九色欧美综合狠狠 | 日本成人中文字幕| 亚洲v中文字幕| 亚洲第一主播视频| 日韩电影在线观看网站| 亚洲电影一级片| 九九九久久久精品| 国产精品99久久久久久似苏梦涵 | 久久精品国产第一区二区三区| 亚洲国产精品久久艾草纯爱| 一区二区三区日韩在线观看| 一区二区三区中文在线观看| 日韩国产欧美在线播放| 国内外成人在线| 成人av小说网| 欧美一级国产精品| 有码一区二区三区| 欧美日韩日本视频| 国产一区视频在线看| 99久久精品国产导航| 欧美视频三区在线播放| 日韩一区二区三区免费观看| 国产欧美日韩三区| 亚洲福利电影网| 国产高清久久久| 欧美一区二区二区| 亚洲欧美精品午睡沙发| 韩国成人精品a∨在线观看| 一本色道久久综合亚洲91| 久久免费的精品国产v∧| 激情久久久久久久久久久久久久久久| 中文字幕在线一区二区三区| 五月婷婷激情综合| 91在线免费播放| 中文字幕乱码久久午夜不卡| 极品美女销魂一区二区三区免费| 色综合天天综合网国产成人综合天| ww亚洲ww在线观看国产| 日韩精品一级二级| 欧美日韩1234| 免费在线一区观看| 欧美一区二区三区在线观看视频 | 亚洲一级二级三级在线免费观看| 国产精品成人一区二区三区夜夜夜| 国产在线一区观看| 国产情人综合久久777777| 国产在线不卡一区| 国产日韩欧美精品一区| 99久久精品国产一区二区三区| 中文字幕免费不卡在线| 狠狠色狠狠色综合系列| 久久精品在线免费观看| av高清久久久| 一区二区三区精密机械公司| 91视频观看视频| 久久综合九色综合97_久久久| 精品亚洲成a人在线观看| 日韩精品中文字幕在线一区| 免费成人av在线| 久久九九全国免费| 欧美日本国产一区| 秋霞午夜av一区二区三区| www欧美成人18+| 欧美日韩另类一区| 成人一区二区三区视频在线观看 | 99re这里都是精品| 国产精品久久一卡二卡| 色婷婷av一区| 亚洲电影你懂得| 91精品久久久久久久久99蜜臂| 亚洲一区二区三区精品在线| 久久久久久久性| 久久精品一二三| 亚洲欧美激情在线| 亚洲一卡二卡三卡四卡无卡久久 | 亚洲一区二区在线免费看| 亚洲欧美欧美一区二区三区| 亚洲精品日韩一| 奇米色一区二区三区四区| 免费人成在线不卡| 国产成人a级片| 不卡一二三区首页| 亚洲私人影院在线观看| 亚洲一区在线视频观看| 男女视频一区二区| av亚洲精华国产精华| 91精品国产综合久久小美女| 久久色在线观看| 午夜在线成人av| 成人免费视频播放|