使用CInternetSession和CHttpFile提取网页源码

程序界面:

使用CInternetSession和CHttpFile提取网页源码

为编辑框添加一个对应的变量:m_sUrl,再为Button1添加点击事件,主要代码如下:

void CGetHtmlCodeDlg::OnButton1() 

{

	CString sHtml;



	UpdateData();

	GetHtmlCode(m_sUrl, sHtml);

	WritetoFile(sHtml);

	MessageBox("提取网页源码完成");

}



void CGetHtmlCodeDlg::GetHtmlCode(const CString url, CString &html)

{

	CInternetSession session;

	CHttpFile * file = NULL;

	

	try

	{

		file = (CHttpFile *)session.OpenURL(url);

		if(file)

		{

			CString line;

			while(file->ReadString(line) != NULL)

			{

				html += line + "\n";

			}

			file->Close();

		}

	}

	catch (CInternetException* e)

	{

		e->Delete();

		html = "CInternet Exception";

	}

	file = NULL;

	session.Close();

}



BOOL CGetHtmlCodeDlg::WritetoFile(const CString& sValue)

{

	CString sFile = GetExePath() + "\\1.html";

	

	CStdioFile file;

	if(file.Open(sFile, CFile::modeCreate | CFile::modeWrite | CFile::modeNoTruncate))

	{

		file.SeekToEnd();				// 移动文件指针到末尾

		file.WriteString(sValue);

		file.Close();

	}

	return FALSE;

}



CString CGetHtmlCodeDlg::GetExePath()

{

	char sFileName[256] = {0};

	CString sPath = _T("");

	

	GetModuleFileName(AfxGetInstanceHandle(), sFileName, 255);

	sPath.Format("%s", sFileName);

	int pos = sPath.ReverseFind('\\');

	if(pos != -1)

		sPath = sPath.Left(pos);

	else

		sPath = _T("");

	

	return sPath;

}

你可能感兴趣的:(internet)