永发信息网

如何通过VC的 CHttpFile 抓取网页内容

答案:1  悬赏:70  手机版
解决时间 2021-02-11 13:54
如何通过VC的 CHttpFile 抓取网页内容
最佳答案
在点击一个按钮时开始请求你输入的地址。
void CHttpFileDlg::OnButton1()
{
  CString url;
  GetDlgItemText(IDC_EDIT1,url); // IDC_EDIT1 是一个输入框的名字。
  char* headers="Accept:*/*\r\nAccept-Language:zh-cn\r\nUser-Agent:VCTestClient\r\n";
  CInternetSession Sess;
  CHttpFile* cFile = (CHttpFile*)Sess.OpenURL(url,1,INTERNET_FLAG_TRANSFER_ASCII||INTERNET_FLAG_RELOAD,headers,strlen(headers));
  DWORD dwStatusCode;
  cFile->QueryInfoStatusCode(dwStatusCode);
  if(dwStatusCode == HTTP_STATUS_OK)
  {
    CString szData,szAllData;
    while(cFile->ReadString(szData))
    {
      szAllData += szData;
      szAllData += "\r\n";
    }
    cFile->Close();
    Sess.Close();
    CString name = GetFileName(url,TRUE);
    CFile file(name, CFile::modeCreate | CFile::modeWrite);
    file.Write(szAllData,szAllData.GetLength());
    file.Close();
  }
  else
  {
    MessageBox("请求失败。。。。");
  }
}

下面是获取请求的文件名,在另存到本地时用同样的文件名。
CString CHttpFileDlg::GetFileName(CString FileName, BOOL Ext)
{ 
  int Where; 
  Where = FileName.ReverseFind('\\'); 
  if (Where == -1) 
    Where = FileName.ReverseFind('/'); 
  CString FileTitle = FileName.Right(FileName.GetLength() - 1 - Where); 
  if (!Ext) 
  { 
    int Which = FileTitle.ReverseFind('.'); 
    if (Which != -1) 
      FileTitle = FileTitle.Left(Which); 
  }
  return FileTitle; 
}

如下图:
CHttpFile 应用程序

小结:
在此程序中我认识了三个类的应用,一个是CHttpFile、另一个是CFile、还有一也是最为关键的CInternetSession。
CFile: 类CFile是基类的Microsoft基础类档案。它直接提供无缓冲,二进制磁盘输入/输出服务,并间接支持文本文件和存储的文件通过其派生类。 CFile工程与CArchive类支持序列化的Microsoft基础类物体。

CHttpFile:类CHttpFile规定的功能要求,并宣读文件HTTP服务器上的。如果您的互联网会议上读取数据的一个HTTP服务器,您必须创建一个实例CHttpFile 。

CInternetSession: 使用类CInternetSession创建和初始化一个或几个同时互联网会话,如有必要,来描述您的连接到代理服务器。如果您的Internet连接必须保持期限的申请,您可以创建一个CInternetSession成员类CWinApp 。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
中农颖泰林州生物科园有限公司(北2门)我想知
怎么判断文言文的被动句
钩状效应
日产新阳光钥匙怎么匹配
hp450(f0w9pa)显卡如何切换?
马驹桥镇算六环外还是五环到六环之间?
我的电脑每次重启过后我最近使用的文档就自动
首次参加露营之类的组织活动,请教露营之类的
空调的外机转一段时间就停了是什么原因?
金川奇石馆在哪里啊,我有事要去这个地方
在高度集中的计划经济体制下,平均主义的分配
极致探索旅行服 务怎么样?
电梯按关门键,门正在关,放个东西卡一下,电梯
现在的水果捞连锁店好做吗
怎么用QQ令牌找回密码
推荐资讯
韵达快递(团结北路)地址好找么,我有些事要过
以相开头的诗句 越多越好
为什么我用CAD画图的时候会出现读取图案出错
7.2x1.9 1.9x2.8的简便计算
秀品阁地址有知道的么?有点事想过去
不带电的物体和带负电的物体会吸引还是排斥?
求像宠辱不惊看庭前花开花落去留无意望天上云
青岛哪个成人用品店比较好?价格便宜,品牌又
设正数a,b,c成等差数列,则二次函数y=ax平方+2
魏家社区居委会地址有知道的么?有点事想过去
什么叫败家女?一个月消费多少属于败家女
鸿运茶园地址有知道的么?有点事想过去
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?