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

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

?? extract.cpp

?? 從htm/html格式的網頁文件中提取內容。將要提取內容的網頁文件用鼠標拖入窗口
?? 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一区二区三区免费野_久草精品视频
91福利区一区二区三区| 日韩高清不卡一区| 亚洲色图视频免费播放| 丝袜美腿亚洲一区| 99在线精品观看| 2024国产精品| 日本在线不卡视频一二三区| 99麻豆久久久国产精品免费 | 国产乱子伦视频一区二区三区 | 亚洲激情男女视频| 国产成人av电影在线播放| 欧美美女视频在线观看| 最新日韩av在线| 国产美女精品在线| 精品三级在线观看| 日本亚洲天堂网| 在线亚洲高清视频| **欧美大码日韩| 成人福利视频在线看| 久久青草国产手机看片福利盒子| 日本视频在线一区| 欧美日韩视频专区在线播放| 夜夜嗨av一区二区三区四季av| 不卡高清视频专区| 国产精品污网站| 成人app网站| 最新国产精品久久精品| 成人app软件下载大全免费| 亚洲国产成人午夜在线一区| 国产米奇在线777精品观看| 久久综合狠狠综合久久综合88| 裸体歌舞表演一区二区| 精品日韩欧美一区二区| 国内精品视频一区二区三区八戒 | 色综合天天天天做夜夜夜夜做| 国产亚洲一区二区在线观看| 国产精品一区二区免费不卡| 久久亚区不卡日本| 国产高清成人在线| 中文字幕一区二区三区在线播放 | 亚洲精品视频在线观看网站| 91麻豆swag| 亚洲一级二级在线| 欧美一级黄色录像| 激情深爱一区二区| 欧美激情在线一区二区| 成人动漫一区二区| 亚洲一区二区视频| 欧美videos大乳护士334| 国产麻豆视频一区二区| 国产精品人妖ts系列视频| 99久久婷婷国产综合精品| 亚洲亚洲人成综合网络| 日韩无一区二区| 成人在线综合网| 亚洲成a人v欧美综合天堂下载| 欧美体内she精高潮| 精品一区精品二区高清| 中文字幕乱码日本亚洲一区二区| 色综合色综合色综合色综合色综合| 亚洲va欧美va人人爽午夜 | 欧美日韩第一区日日骚| 久久国产精品一区二区| 国产精品色哟哟| 欧美日韩精品一区二区三区蜜桃| 久久99九九99精品| 中文字幕一区二区三| 欧美精品tushy高清| 国产电影一区在线| 婷婷久久综合九色国产成人| 久久久噜噜噜久久人人看| 日本精品视频一区二区三区| 久国产精品韩国三级视频| 亚洲视频在线一区| 日韩视频在线永久播放| 91网站在线观看视频| 精品一区免费av| 亚洲一区二区精品视频| 国产欧美精品国产国产专区| 欧美日韩国产首页| 成人深夜视频在线观看| 人人精品人人爱| 一区二区三区四区精品在线视频| 久久午夜羞羞影院免费观看| 欧美综合在线视频| 成人国产亚洲欧美成人综合网 | 国产98色在线|日韩| 三级影片在线观看欧美日韩一区二区| 国产日韩欧美综合在线| 日韩欧美一级二级三级| 欧美在线不卡一区| 99精品欧美一区二区三区综合在线| 免费成人在线网站| 午夜在线成人av| 亚洲精品国产无套在线观| 国产欧美日韩另类一区| 精品理论电影在线观看 | 一本久道久久综合中文字幕| 国产精品456露脸| 免费成人你懂的| 丝袜美腿高跟呻吟高潮一区| 亚洲女人的天堂| 亚洲视频一区二区在线| 中文字幕亚洲一区二区va在线| 精品对白一区国产伦| 精品日韩成人av| 精品国产乱码久久久久久闺蜜 | 亚洲大尺度视频在线观看| 最新日韩av在线| 1024精品合集| 亚洲激情图片一区| 一区二区三区欧美亚洲| 亚洲精品成人精品456| 亚洲日本电影在线| 亚洲美女区一区| 亚洲高清一区二区三区| 亚洲午夜久久久| 日韩中文字幕不卡| 青草av.久久免费一区| 美腿丝袜亚洲一区| 精品在线播放免费| 国产精品中文字幕日韩精品| 国产福利精品导航| 99亚偷拍自图区亚洲| 91国产福利在线| 欧美一区二区三区视频免费播放 | 中文字幕免费一区| 中文字幕制服丝袜一区二区三区| 国产精品久久久久久久久图文区| 国产精品成人午夜| 亚洲一区在线观看网站| 免费成人结看片| 国产一区二区三区免费看| 成人免费视频app| 日本乱人伦aⅴ精品| 91精品国产91久久综合桃花| 日韩精品中文字幕一区| 国产精品无人区| 亚洲超碰精品一区二区| 青青草91视频| 北条麻妃国产九九精品视频| 在线观看日韩高清av| 精品国产一区a| 亚洲乱码国产乱码精品精小说| 亚洲国产美女搞黄色| 久草热8精品视频在线观看| av亚洲精华国产精华精| 欧美日韩精品专区| 国产亚洲美州欧州综合国| 亚洲综合免费观看高清在线观看| 亚洲国产精品影院| 国产成人精品一区二区三区网站观看| 91丨九色丨尤物| 日韩视频一区在线观看| 国产精品卡一卡二| 日韩成人一区二区三区在线观看| 高清国产一区二区| 欧美一区在线视频| 国产精品高潮呻吟| 精品亚洲porn| 欧美午夜精品一区| 日本一二三不卡| 老司机精品视频导航| 欧美综合亚洲图片综合区| 欧美精品一区视频| 亚洲成a人片在线观看中文| 成人免费视频播放| 精品国产乱码久久久久久免费| 一区二区三区在线视频播放| 国v精品久久久网| 日韩精品自拍偷拍| 午夜精品久久久久久久久久| 99国产精品国产精品久久| 欧美成人福利视频| 午夜电影网亚洲视频| 91国模大尺度私拍在线视频| 亚洲国产精品ⅴa在线观看| 精品一区二区综合| 日韩欧美国产不卡| 调教+趴+乳夹+国产+精品| 欧美性三三影院| 亚洲视频在线一区| av电影一区二区| 国产精品久久久久毛片软件| 国产精品一品二品| 久久婷婷国产综合国色天香| 日韩中文字幕区一区有砖一区| 欧美性生活大片视频| 亚洲精品视频在线观看免费| 91伊人久久大香线蕉| 国产精品区一区二区三区| 成人三级在线视频| 日本一区二区三区四区在线视频| 精品亚洲成a人在线观看| 精品日韩成人av| 国产精品系列在线观看| 久久精品在线观看| 成人永久aaa| 一色桃子久久精品亚洲| 91一区一区三区|