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

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

?? htmlparser.cpp

?? 網絡圖片收集軟件
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// HtmlParser.cpp: implementation of the CHtmlParser class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "image.h"
#include "HtmlParser.h"
#include <afxinet.h>

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
/*
const int g_nValidFiles=9;
static char * g_aszValidFiles[g_nValidFiles]=
{
	".htm",
	".html",
	".shtm",
	".htms",
	".shtml",
	".aspx",
	".jsp",
	".php",
	".jhtml",
};
*/
const int g_nValidFiles=1;
static char * g_aszValidFiles[g_nValidFiles]=
{
	".swf",
};
const int g_nValidImages=6;
static char *g_aszValidImages[g_nValidImages]=
{
	".gif",
	".jpg",
	".jpeg",
	".bmp",
	".pnp",
	".tiff",
};



//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CHtmlParser::CHtmlParser(Option &option,int unlikelevel)
{
	m_image_type=option.image_type;
	m_max_length=option.max_length;
	m_max_width=option.max_width;
	m_min_length=option.min_length;
	m_min_width=option.min_width;
	m_unlike_level=unlikelevel;
	m_exclusive_level=option.exclusive_level;
	m_site_maxlevel=option.max_level;//本變量用來記住本網站要下載的最大層的層數
	//i=0;

}

CHtmlParser::~CHtmlParser()
{

}

bool CHtmlParser::FindToken(const char *pTokens, const char *pBuffer, int &nIndex, int nMaxLen)
{
	int nTokenCount=strlen(pTokens);
	bool bQuote=false;

	//while we haven't run out of buffer space...
	while(nIndex<nMaxLen)
	{
		for(int i=0;i<nTokenCount;i++)
		{
			if(pBuffer[nIndex]==pTokens[i])
				return (true);

		}
		nIndex++;
	}
	return false;

}

void CHtmlParser::ParseText(char *pBuffer, int nMaxLen)
{
	int nIndex=0;

	//Initialize some work flags
	//m_strTag.Empty();
	//m_arrparapair.RemoveAll();

	while(nIndex < nMaxLen)
	{
		if(GetTag(pBuffer,nIndex,nMaxLen))
		{
			ProcessTag();
		}
	}

}

//最后nIndex的值為指向pTerminals的索引,這和原來的定義有差別
CString CHtmlParser::GetString(const char *pTerminals, const char *pBuffer, int &nIndex, int nMaxLen)
{
	int nOldIndex=nIndex;
	CString strText;

	//跳過前面的空格
	while(nIndex<nMaxLen && pBuffer[nIndex]==' ')
		nIndex++;
	//查詢pTerminals指向的字符
	if(FindToken(pTerminals,pBuffer,nIndex,nMaxLen))
	{
		/*下面的內容為我自己加的原來的代碼為
		 * nIndex++;
		 * strText=nBuffer+nOldIndex;
		 * strText=strText.left(nIndex-nOldIndex-1);
		 */
		strncpy(strText.GetBuffer(nIndex-nOldIndex),pBuffer+nOldIndex,nIndex-nOldIndex);
		strText.ReleaseBuffer();

	}
	return strText;

}

//是否完整,以后再說
bool CHtmlParser::WantTag()
{
	if(m_strTag=="frame"||m_strTag=="a"||m_strTag=="area"||
		m_strTag=="img"||m_strTag=="body"||m_strTag=="embed"||m_strTag=="input"
		||m_strTag=="param")
		return true;
	
	
	return false;

}



bool CHtmlParser::GetTag(const char *pBuffer, int &nIndex, int nMaxLen)
{
	m_strTag.Empty();//要放此次分析得到tag
	m_arrparapair.RemoveAll();//此數組要放tag對應的屬性和屬性對應的值

	//找到tag的起始點
	if(FindToken("<",pBuffer,nIndex,nMaxLen))
	{
		//現在把nIndex指向tag?
		int nStart=++nIndex;//+1;
		//nIndex++;
		
		//判斷是否是一個有效的tag
		if(pBuffer[nIndex]==' '||pBuffer[nIndex]=='>'||pBuffer[nIndex]=='!')
			return false;

		//找到tag的結束位置
		if(FindToken(">",pBuffer,nIndex,nMaxLen))
		{
			//取得tag的值 only the tag ,not the parameter and value such as
			//<a href="http://www.china.com">
			m_strTag=GetString(" >\r\n",pBuffer,nStart,nIndex+1);
			m_strTag.MakeLower();
			//CString script;
			//bool noFind=true;
			//if(m_strTag=="script")
			//{
			//	while(noFind)
			//	{
			//		FindToken("<",pBuffer,nStart,nMaxLen);
			//		nStart++;
			//		if(nStart>=nMaxLen)
			//		break;
			//		_tcsncpy(script.GetBuffer(8),pBuffer+nStart,7);
			//		script.ReleaseBuffer();
			//		if(script=="/script")
			//		noFind=false;

			//	}
			//	nStart+=7;
				//處理script內容
			//	nIndex=nStart;

			//}
			//else
			if(WantTag())
			{
				GetParaPair(pBuffer,nStart,nIndex+1);
				return true;
			}
		}

	}
	return false;

}

bool CHtmlParser::ProcessTag()
{
	CString strText;
	CString temp;

	int ii;
	int level;
	//需要加入input 類型對于像www.eluxury.com類型的網站

	if(m_strTag=="frame" ||m_strTag=="a"||m_strTag=="area"||m_strTag=="input")
	{
		for(int i=0;i<m_arrparapair.GetSize();i++)
		{
			strText=m_arrparapair[i].GetPara();

			/*
			 *我們感興趣的有onclick=""之類的東西
			 *
			 */
			level=m_nLevel;
			CString substr;
			if(strText=="onclick")
			{
				strText=m_arrparapair[i].GetValue();
				substr=strText.Left(11);
				substr.MakeLower();
				if(substr=="window.open")
				{
					//處理相http://wwww.shoebuy.com一類的網站
					int begin=strText.Find('(');
					if(begin!=-1)
						substr=strText.Mid(begin+1);
					else
						substr=strText.Mid(11);
					substr.TrimLeft();

					if(substr.Left(1)=="\"")
						substr=substr.SpanExcluding("\"");
					else if(substr.Left(1)=="'")
						substr=substr.SpanExcluding("'");
					else
						substr=substr.SpanExcluding(" ,");
					//現在str為window.open的第一個參數也既是url
					MakeQualifiedUrl(substr,level);
					if(level>0)
					{
						URL_LEVEL url_level;
						url_level.m_url=substr;
						url_level.level=level;
						m_url_level.Add(url_level);
					}

				}
				else if(substr=="javascript:"){
					//留下來供將來擴充

				}
			
				
			}
			else if(strText=="href")
			{
				//定做要在本段中進行大量的改造,需要留下擴充的接口

				strText=m_arrparapair[i].GetValue().SpanExcluding("?;");				
				strText.MakeLower();

				if(strText.Left(11)=="javascript:")
				{
					//定做主要在本部分完成而且要返回
					substr=strText.Mid(11);
					//CString temp=substr.Left(
					if(substr.Left(5)=="popup")
					{
						//本部分要處理的網站是www.zappos.com
						CString url,tmp;
						substr=substr.SpanExcluding(")");
						int index=substr.Find("(",0);
						substr=substr.Mid(index+1);
						//url是PopUp的第一個參數
						url=substr.SpanExcluding(",");

						index=substr.Find(",");
						substr=substr.Mid(index+1);
						
						//現在tmp是PopUp的第二個參數
						tmp=substr.SpanExcluding(",");
						tmp.MakeLower();
						index=tmp.Find("large",0);
						//如果不含large則不是我們感興趣的東西退出
						if(index==-1)
							return true;
						tmp=tmp.SpanExcluding("l");

						for(index=0;index<url.GetLength();index++)
							if(url[index]=='\\'||url[index]=='\'')
								url.SetAt(index,' ');
						//現在url是已經提取的第一個參數
						url.TrimLeft();
						url.TrimRight();

						for(index=0;index<tmp.GetLength();index++)
							if(tmp[index]=='\\'||tmp[index]=='\'')
								tmp.SetAt(index,' ');

						//現在tmp是我們需要的第二個參數
						tmp.TrimLeft();
						tmp.TrimRight();
						
						//url是我們要求的超鏈
						substr=url+"?product_id="+tmp+"&color_id=";
						

						MakeQualifiedUrl(substr,level);
						if(level>0)
						{
							URL_LEVEL url_level;
							url_level.m_url=substr;
							url_level.level=level;
							m_url_level.Add(url_level);
						}

					}else if(substr.Left(11)=="executelink")//現在要處理的網站是www.coldwatercreek.com
					{
						strText=m_arrparapair[i].GetValue();
						int ss=strText.Find(',');
						if(ss!=-1)
						{
							strText=strText.Mid(ss+1);
							strText=strText.SpanExcluding(")");
							for(ss=0;ss<strText.GetLength();ss++)
							if((strText[ss]=='\'')||(strText[ss]=='"'))
								strText.SetAt(ss,' ');
							
							strText.TrimLeft();
							strText.TrimRight();
							if(strText.Find("productlist")==-1)
							{
								substr=strText.Mid(15);
								substr="/aspx/product.aspx"+substr;
							}
							else
								substr="/"+strText;

							MakeQualifiedUrl(substr,level);
							if(level>0)
							{
								URL_LEVEL url_level;
								url_level.m_url=substr;
								url_level.level=level;
								m_url_level.Add(url_level);
							}							
						}//end if(ss!=-1)
					}//end else if(substr.Left(11)=="executelink")

					continue;
				}//end 	if(strText.Left(11)=="javascript:")//下面判斷是否是郵件的鏈接如果是簡單的返回true
				else if(strText.Left(7)=="mailto:")
					continue;
				//此鏈接為指向本頁面內的一個鏈接ignore it
				else if(strText.Left(1)=="#")
					continue;
				else if(WantFileType(strText))
				{
					//下面被我修改看是否可以實現本網站的下載
					strText=m_arrparapair[i].GetValue();
					MakeQualifiedUrl(strText,level);
					if(level>0)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕在线不卡一区二区三区| 欧美一区二区三区电影| 色欧美乱欧美15图片| 日韩天堂在线观看| 中文字幕一区二区三区av| 亚洲v中文字幕| 91亚洲永久精品| 日韩欧美中文字幕一区| 中文字幕乱码久久午夜不卡| 日本不卡视频在线| 色一情一乱一乱一91av| 欧美日本视频在线| 亚洲色图欧美激情| 国产永久精品大片wwwapp| 欧美日韩免费在线视频| 国产精品久久久久久久久图文区 | 日韩欧美中文字幕公布| 亚洲免费三区一区二区| 成人在线视频首页| 欧美成人精品1314www| 婷婷久久综合九色综合绿巨人 | 欧美精选一区二区| 亚洲女性喷水在线观看一区| 国产精品影视天天线| 欧美变态口味重另类| 五月天久久比比资源色| 在线观看一区二区精品视频| 亚洲色图.com| 99久久精品国产观看| 久久精品亚洲乱码伦伦中文| 国产一区在线不卡| 精品国产伦理网| 狂野欧美性猛交blacked| 777午夜精品视频在线播放| 午夜成人在线视频| 欧美精品v国产精品v日韩精品| 亚洲精品国产视频| 91亚洲精华国产精华精华液| 国产精品妹子av| a美女胸又www黄视频久久| 国产精品免费久久| 91视频91自| 亚洲资源在线观看| 欧美色视频在线观看| 午夜亚洲福利老司机| 91精品国产综合久久香蕉的特点| 日本va欧美va精品| 精品免费日韩av| 国产一区二区三区四区五区美女| 国产欧美精品区一区二区三区 | 欧美精彩视频一区二区三区| 国产在线看一区| 久久免费视频色| 日韩一区二区电影| 国产精品一色哟哟哟| 久久精品日韩一区二区三区| 国产精品夜夜嗨| 中文字幕乱码一区二区免费| 成人中文字幕在线| 中文字幕一区在线| 日韩成人av影视| 国产无人区一区二区三区| 成人久久18免费网站麻豆 | 久88久久88久久久| 精品1区2区在线观看| 国产精品正在播放| 国产精品电影一区二区| 色噜噜狠狠一区二区三区果冻| 亚洲综合小说图片| 欧美日韩精品一区二区在线播放 | 88在线观看91蜜桃国自产| 美女视频网站黄色亚洲| 欧美性受xxxx黑人xyx| 日韩av在线发布| 精品国产第一区二区三区观看体验| 久久福利视频一区二区| 久久精品视频在线免费观看| 国产麻豆午夜三级精品| 亚洲国产成人午夜在线一区| 99国产精品一区| 视频一区中文字幕国产| 欧美r级在线观看| 成人av在线影院| 性欧美大战久久久久久久久| 91精品欧美一区二区三区综合在| 精品一区二区三区在线播放| 中文字幕一区二区三区蜜月| 欧美一区二区福利视频| 国产精品亚洲人在线观看| 亚洲人成在线播放网站岛国| 91精品蜜臀在线一区尤物| 不卡的av在线播放| 美日韩一区二区| 亚洲精选视频免费看| 欧美日韩在线播放三区| 国产成都精品91一区二区三| 亚洲国产精品综合小说图片区| 欧美mv日韩mv亚洲| 欧美在线观看你懂的| 狠狠色丁香九九婷婷综合五月| 亚洲人成网站精品片在线观看| 欧美电视剧免费观看| 日本韩国欧美一区二区三区| 国产成人免费xxxxxxxx| 日本欧美在线观看| 久久久久久一二三区| 欧美日韩小视频| 99国产精品99久久久久久| 久久国产精品免费| 亚洲精品欧美激情| 国产精品久久久久桃色tv| 日韩一区二区在线看| 一本色道亚洲精品aⅴ| 国产宾馆实践打屁股91| 国产亚洲污的网站| av不卡免费电影| 久久国产精品99精品国产| 亚洲在线观看免费| 亚洲视频一区二区在线| 国产精品蜜臀在线观看| 久久色中文字幕| 精品少妇一区二区三区免费观看| 欧美亚洲高清一区二区三区不卡| 福利一区福利二区| 亚洲欧美日韩在线播放| 2020国产成人综合网| 日韩精品一区在线观看| 日韩视频免费直播| 欧美一区三区二区| 69精品人人人人| thepron国产精品| 国产a久久麻豆| 国产精品 日产精品 欧美精品| 美女一区二区三区在线观看| 奇米精品一区二区三区在线观看| 一区二区三区中文字幕| 亚洲最色的网站| 亚洲成人动漫av| 日产国产高清一区二区三区| 日韩国产欧美在线播放| 亚洲成人免费视| 热久久一区二区| 美国三级日本三级久久99| 蜜臀av性久久久久蜜臀aⅴ| 免费三级欧美电影| 首页国产欧美久久| 久久精品国产在热久久| 奇米777欧美一区二区| 欧美aⅴ一区二区三区视频| 美国一区二区三区在线播放| 国产原创一区二区三区| 日韩国产一区二| 成人看片黄a免费看在线| 99精品欧美一区二区三区小说| 色欧美片视频在线观看| 欧美久久婷婷综合色| 精品成人私密视频| 国产精品久久午夜夜伦鲁鲁| 欧美激情在线一区二区三区| 国产精品国产自产拍在线| 亚洲一区二区三区四区五区黄| 日产国产欧美视频一区精品| 国产一区二区美女诱惑| 国产成人综合在线播放| 色播五月激情综合网| 欧美丰满少妇xxxxx高潮对白| 精品日韩99亚洲| 中文字幕va一区二区三区| 国产精品久久网站| 爽好久久久欧美精品| 国产成人免费高清| 欧美在线综合视频| 欧美日韩中文字幕精品| 欧美一区二区美女| 国产精品久久毛片| 日韩国产欧美在线视频| 国产99久久精品| 欧美体内she精高潮| 精品国产凹凸成av人网站| 亚洲女同ⅹxx女同tv| 久久精品国产一区二区| 一本色道a无线码一区v| 欧美男人的天堂一二区| 日韩一区二区精品在线观看| 中文字幕日韩欧美一区二区三区| 亚洲欧美国产毛片在线| 国产一区视频导航| 在线免费av一区| 国产精品剧情在线亚洲| 蜜桃av噜噜一区| 91在线免费播放| 国产精品色一区二区三区| 免费不卡在线观看| 色综合激情久久| 国产日韩欧美不卡在线| 蜜桃视频一区二区三区在线观看| jlzzjlzz欧美大全| 久久女同精品一区二区| 亚洲一区中文日韩| 国产精品18久久久久|