VC++6.0下基于MFC框架利用CInternetSession和CHttpFile获取网页数据(附代码)

版权声明:转载请附上源地址 https://blog.csdn.net/weixin_40026797/article/details/84074480

例:从网站http://qq.ip138.com/weather/guangdong/GuangZhou.htm获取近三天的日期、天气、温度、风向,代码如下:

//添加头文件
#include <afxinet.h>

//获取网络数据
void CSensorSysDlg::GetNetworkData()
{
	UpdateData();//刷新
	CInternetSession Session("");
	CHttpFile *HttpFile=NULL;
	CString strData;
	CString strUrl; 
	CString strReturnStr="";
	CString strEdit;
	
	//获取ip138天气信息
	//获取URL
	strUrl.Format( _T("http://qq.ip138.com/weather/guangdong/GuangZhou.htm"),"广州");
	//打开URL
	HttpFile = (CHttpFile*)Session.OpenURL(strUrl,1,INTERNET_FLAG_TRANSFER_ASCII|INTERNET_FLAG_DONT_CACHE|INTERNET_FLAG_RELOAD|INTERNET_FLAG_PRAGMA_NOCACHE);
	if(HttpFile==NULL)
	{
		AfxMessageBox("无法打开网页,请检查网络连接!");
		return;
	}
	
	//将数据读取到m_ReturnStr
	while( HttpFile->ReadString( strData ) )
	{
		strReturnStr += strData;
	}

	UpdateData();//刷新数据
	
	strReturnStr.Delete(0,strReturnStr.Find("<tr class=\"bg5\">"));//定位到所需文本

	strReturnStr.Delete(0,strReturnStr.Find("h=")+8);//获得今天日期
	strEdit=strReturnStr.Left(strReturnStr.Find(" "));
	m_strDate1.Format(strEdit);

	strReturnStr.Delete(0,strReturnStr.Find("h=")+8);//获得明天日期
	strEdit=strReturnStr.Left(strReturnStr.Find(" "));
	m_strDate2.Format(strEdit);

	strReturnStr.Delete(0,strReturnStr.Find("h=")+8);//获得后天日期
	strEdit=strReturnStr.Left(strReturnStr.Find(" "));
	m_strDate3.Format(strEdit);

	strReturnStr.Delete(0,strReturnStr.Find("<br/>")+5);//获得今天天气
	strEdit=strReturnStr.Left(strReturnStr.Find("<"));
	m_strWeather1.Format(strEdit);
	
	strReturnStr.Delete(0,strReturnStr.Find("<br/>")+5);//获得明天天气
	strEdit=strReturnStr.Left(strReturnStr.Find("<"));
	m_strWeather2.Format(strEdit);

	strReturnStr.Delete(0,strReturnStr.Find("<br/>")+5);//获得后天天气
	strEdit=strReturnStr.Left(strReturnStr.Find("<"));
	m_strWeather3.Format(strEdit);
	
	strReturnStr.Delete(0,strReturnStr.Find("</tr><tr>")+13);//获得今天气温
	strEdit=strReturnStr.Left(strReturnStr.Find("</td>"));
	m_strTemperature1.Format(strEdit);	
	
	strReturnStr.Delete(0,strReturnStr.Find("<td>")+4);//获得明天气温
	strEdit=strReturnStr.Left(strReturnStr.Find("</td>"));
	m_strTemperature2.Format(strEdit);
	
	strReturnStr.Delete(0,strReturnStr.Find("<td>")+4);//获得后天气温
	strEdit=strReturnStr.Left(strReturnStr.Find("</td>"));
	m_strTemperature3.Format(strEdit);

	strReturnStr.Delete(0,strReturnStr.Find("</tr><tr>")+13);//获得今天风向
	strEdit=strReturnStr.Left(strReturnStr.Find("</td>"));
	m_strWind1.Format(strEdit);

	strReturnStr.Delete(0,strReturnStr.Find("<td>")+4);//获得明天风向
	strEdit=strReturnStr.Left(strReturnStr.Find("</td>"));
	m_strWind2.Format(strEdit);

	strReturnStr.Delete(0,strReturnStr.Find("<td>")+4);//获得后天风向
	strEdit=strReturnStr.Left(strReturnStr.Find("</td>"));
	m_strWind3.Format(strEdit);
	
	//释放资源
	HttpFile->Close();
	Session.Close();
    UpdateData(FALSE);//刷新对话框
}

猜你喜欢

转载自blog.csdn.net/weixin_40026797/article/details/84074480
今日推荐