VC中使用CInternetSession抓取网页内容

WinInet 编程:MFC 中的互联网编程 WinInet 是一套 Windows API(应用程序编程接口),用于实现互联网应用程序的网络通信和数据传输。WinInet 抽象了底层网络协议和硬件细节,为程序员提供了一套统一的接口,简化了互联网应用程序的开发过程。WinInet 广泛应用于各种 Windows 应用程序中,包括网页浏览器、下载管理器、网络游戏等。MFC WinInet 是一套强大的类库,为 MFC 程序员提供了在 Windows 平台上实现互联网通信和数据传输的工具。 阅读详情
 

VC中使用CInternetSession抓取网页内容  

2010-09-02 20:23:13|  分类: vc++ MFC |  标签: |字号大中小 订阅

VC:

#include "afxinet.h"
#include <string>

CString url ("http://localhost/web?cmd=start&sn=123456&ai=abcd");   
 CInternetSession session;
 CHttpFile* pfile = (CHttpFile*)session.OpenURL(url,1,INTERNET_FLAG_TRANSFER_ASCII||INTERNET_FLAG_RELOAD,NULL,0);

 DWORD dwStatusCode;   
 pfile -> QueryInfoStatusCode(dwStatusCode);   
 if(dwStatusCode == HTTP_STATUS_OK)   
 {   
  char strBuff[1025] = {0};
  std::string strHtml; 
  while ((pfile->Read((void*)strBuff, 1024)) > 0)
  {
   strHtml += strBuff;
  } 

  CString str;
  str = strHtml.c_str();

  int rcS = str.Find(_T("<rc>"));
  int rcE = str.Find(_T("</rc>"));
  CString rc = str.Mid(rcS + 4,rcE - rcS - 4);

  int msgS = str.Find(_T("<msg>"));
  int msgE = str.Find(_T("</msg>"));

  CString msg = str.Mid( msgS + 5,msgE - msgS - 5);
 }   
 pfile -> Close();   
 delete pfile;   
 session.Close();

C#:

 

using System.Net;

using System.IO;

string url = "http://localhost/web?cmd=start&sn=123456&ai=abcd";     

WebRequest wrq = WebRequest.Create(url);

WebRequest wrs = wrq.GetResponse();

Stream stream = wrs.GetResponseStream();

 

StreamReader sr = new StreamReader(stream);

string response;

while ((response = sr.ReadLine()) != null)

{

   int rcS = response.LastIndexOf("<rc>");

   int rcE = response.LastIndexOf("</rc>");

   if (idS != -1 && idE != -1)

    {

      string rc = response.Substring(rcS + 4, rcE - rcS - 4);

    }

if (msgS != -1 && msgE != -1)

    {

      string msg = response.Substring(msgS + 5, msgE - msgS - 5);

    }

}

---------------------------------------------------------------------------------------------------------------------------------------

//头部包含afxinet.h
#include <afxinet.h>

CInternetSession::OpenURL函数原型为:

CStdioFile* OpenURL( LPCTSTR pstrURL, //文件URL地址
DWORD dwContext = 1, //上下文ID
DWORD dwFlags = INTERNET_FLAG_TRANSFER_ASCII, //标记
LPCTSTR pstrHeaders = NULL, //发送到服务器的数据头
DWORD dwHeadersLength = 0 );//发送到服务器的数据头长度

dwFlags可以为:
INTERNET_FLAG_RELOAD 强制重读数据
INTERNET_FLAG_DONT_CACHE 不保存到缓存
INTERNET_FLAG_TRANSFER_ASCII 使用文本数据
INTERNET_FLAG_TRANSFER_BINARY 使用二进制数据

在 VC 中用 WinInet 的 CInternetSession::OpenURL(url),得到一个 CFile,读取其中的内容即可,详细代码如下


#include <stdio.h>   
#include <afxinet.h>   
  
int main(int argc, char* argv[])   
{   
     CInternetSession session("HttpClient");   
    char * url = " http://www.imobile.com.cn/simcard.php?simcard=1392658";   
     CHttpFile* pfile = (CHttpFile *)session.OpenURL(url);   
       
    DWORD dwStatusCode;   
     pfile -> QueryInfoStatusCode(dwStatusCode);   
    if(dwStatusCode == HTTP_STATUS_OK)   
     {   
         CString content;   
         CString data;   
        while (pfile -> ReadString(data))   
         {   
             content   += data + "\r\n";   
         }   
         content.TrimRight();   
         printf(" %s\n " ,(LPCTSTR)content);   
     }   
     pfile -> Close();   
    delete pfile;   
     session.Close();   
       
    return    0 ;   

--------------------------------------------------------------------------------------------------------------------------------------------------------------

在 VC 中用 WinInet 的 CInternetSession::OpenURL(url),得到一个 CFile,读取其中的内容即可,细致代码如下
  #include <stdio.h>
  #include <afxinet.h>
  int main(int argc, char* argv[])
  {
  CInternetSession session("HttpClient");
  char * url = " http://www.imobile.com.cn/simcard.php?simcard=1392658";
  CHttpFile* pfile = (CHttpFile *)session.OpenURL(url);
  DWORD dwStatusCode;
  pfile -> QueryInfoStatusCode(dwStatusCode);
  if(dwStatusCode == HTTP_STATUS_OK)
  {
  CString content;
  CString data;
  while (pfile -> ReadString(data))
  {
  content += data + "rn";
  }
  content.TrimRight();
  printf(" %sn " ,(LPCTSTR)content);
  }
  pfile -> Close();
  delete pfile;
  session.Close();
  return  0 ;
  }
  #include <stdio.h>
  #include <afxinet.h>
  int main(int argc, char* argv[])
  {
  CInternetSession session("HttpClient");
  char * url = " http://www.imobile.com.cn/simcard.php?simcard=1392658";
  CHttpFile* pfile = (CHttpFile *)session.OpenURL(url);
  DWORD dwStatusCode;
  pfile -> QueryInfoStatusCode(dwStatusCode);
  if(dwStatusCode == HTTP_STATUS_OK)
  {
  CString content;
  CString data;
  while (pfile -> ReadString(data))
  {
  content += data + "rn";
  }
  content.TrimRight();
  printf(" %sn " ,(LPCTSTR)content);
  }
  pfile -> Close();
  delete pfile;
  session.Close();
  return  0 ;
  }
  其他如不从缓存中读取内容及如何使用代理连接现在就不说了,能够参考下面的链接,或者下次补上。另外不妨看看 Java 是如何读取 URL 内容的,更简单

  GetMethod httpMethod = new GetMethod("http://unmi.blogcn.com");
  int statusCode = new HttpClient().executeMethod(httpMethod);
  if(statusCode == HttpStatus.SC_OK)
  {
  System.out.println(httpMethod.getResponseBodyAsString());
  }
  httpMethod.releaseConnection();
  GetMethod httpMethod = new GetMethod("http://unmi.blogcn.com");
  int statusCode = new HttpClient().executeMethod(httpMethod);
  if(statusCode == HttpStatus.SC_OK)
  {
  System.out.println(httpMethod.getResponseBodyAsString());
  }
  httpMethod.releaseConnection();
  内容取过来之后,分是希望从中拣出需要的数据,可惜 VC6 中没有本人的正则表达式库,所以下一步要学用 boost 的正则表达式库。

VC读取网页的内容 VC++读取网页的内容,远程网页数据操作,VC++6.0源代码 立即下载

相关推荐

万象RK3506-EG1800网关使用说明

摘要:HD-RK3506-EG1800是一款高性能工业物联网边缘计算网关,支持Buildroot和Ubuntu双系统。文档详细介绍了网关的网络配置(包括ETH0/ETH1的静态IP设置、WiFi连接)、时钟同步、HSL软件安装配置(含开机自启动服务)、系统日志优化以及刷机操作指南(Loader/Maskrom模式)。特别提供了基于lighttpd的网页管理方案,通过HTML界面实现网络参数可视化配置,包含身份验证、实时状态显示和表单提交功能。网关默认ETH0固定IP为192.168.1.10,提供完整的CL

tian_jiangnan的博客 175

VC++6.0 通过HTTP方式获取网页 OpenURL

//头部包含afxinet.h  2  #include afxinet.h>  3 CInternetSession::OpenURL函数原型为:  4 CStdioFile* OpenURL( LPCTSTR pstrURL, //文件URL地址  5   DWORD dwContext = 1, //上下文ID  6   DWORD dwFlags = INTERNET_FLAG_

ccfxue的博客 2万+

来自工业界的知识库 RAG 服务(二),RagFlow 源码全流程深度解析

前面介绍过有道 QAnything 源码解析,通过深入了解工业界的知识库 RAG 服务,得到了不少调优 RAG 服务的新想法。因此本次趁热打铁,额外花费一点时间,深入研究了另一个火热的开源 RAG 服务RagFlow的完整实现流程,希望同样有所收获。首先依旧可以先从框架图入手,与常规的 RAG 架构进行一些比较可以看到右侧知识库被明显放大,同时最右侧详细介绍了文件解析的各种手段,比如OCR等,这些在常规的 RAG 中可能会作为一个不起眼的。

易迟的专栏 2万+

MFC访问http协议

#include "afxwin.h" #include "afxinet.h" #include CString CTicketCheckSysDlg::HttpPostMessage( CString strUrl, CString strPostDate ) { CString strJsonMessage(_T("-1")); CString strServer;

dadong798的博客 1554

5G物理层基础知识

1、关于RB和RE (1) RB(Resource Block,资源块)频率上连续12个子载波,时域上一个slot(时隙,14个ofdm符号) (2) RE(Resource Element,资源单元)频率上一个子载波,及时域上一个ofdm符号 注意:协议规定,5G每个时隙(非扩展CP)的符号数为14个(扩展CP情况下每个时隙有12个符号),而LTE(非扩展CP)每个时隙的符号数为7个。 简单说:一个12X14的方格,大的整个叫一个RB,每一个小块叫一个RE。另外,一个RE可存放一个调制符号(mo.

qq_39074243的博客 2万+

Halcon 简单的形状匹配定位与区域跟随

【代码】Halcon简单的形状匹配定位与区域跟随。

唐大狗 2806

实现程序向网站的POST (MFC版)

<!--google_ad_client = "pub-0241434510974184";/* 博客文章广告728x90, */google_ad_slot = "7316585398";google_ad_width = 728;google_ad_height = 90;// -->下面给个简单的源码:#include CString strH

MPU的专栏 3194

硬件基础(4):(7)ADC电压采集:软件校准(标定、拟合)

在实际项目中,**软件端校准**可以有效弥补硬件方面(分压电阻误差、放大器失调、参考源误差等)带来的系统性偏差,从而提高 ADC 测量精度。下面是一个常见的**多点实测校准**流程与思路,个人感觉传感器标定的原理也只这样。

FCZlll的博客 6245

MFC 读取网页源码

MFC 当中当需要获取网页源码时,可以用到 CInternetSession 类 需要包含头文件 afxinet.h 使用类CInternetSession 创建并初始化一个或多个同时的Internet 会话。如果需要,还可描述与代理服务器的连接。如果Internet连接必须在应用过程中保持着,可创建一个类CWinApp的CInternetSession成员。一旦已建立起Internet 会话,

行人事,知天命 6851

华为的LTC(Lead to Cash,从线索到现金)流程是其销售管理体系的核心,覆盖了从发现销售线索到最终收回现金的全过程,强调端到端的业务贯通和以客户为中心的运营理念

华为LTC流程是覆盖销售全周期的管理体系,包含四大阶段:线索转机会(LTO)、机会转订单(OTO)、订单转交付(OTD)、交付转现金(DTC)。其核心采用"铁三角"团队模式(AR/SR/FR协作),通过多部门联合评审把控关键节点,实现端到端业务贯通。该流程与IPD、MTL、ITR等体系高效协同,结合iSales平台实现数字化管理,有效提升销售效率、客户满意度和资金回笼速度。

金牌架构师 1724

SAP Retail 补货里的 Requirement Groups,站点和商品太多时,主数据维护如何做减法

SAP Retail补货主数据设计中,Requirement Groups(需求组)是常被低估但至关重要的分类机制。它通过将具有相同补货需求的接收方(如门店)按商品分类(Merchandise Category)分组,大幅降低主数据维护量。在大型零售场景中(如800家门店、6万商品),直接维护每个门店和商品的组合参数会导致维护量失控。Requirement Groups允许企业按品类特性(如乳制品、饮料等)为不同门店组设置统一补货参数,并随业务变化灵活调整。该机制与商品分类紧密绑定,不同于MRP Group

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 68

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

如何通过VC的 CHttpFile 抓取网页内容[2009-6-30 13:08:02]引用地址:http://www.398588.com/Article/T9/78.aspx在点击一个按钮时开始请求你输入的地址。void CHttpFileDlg::OnButton1() <br />{<br />    CString url;<br />    GetDlgItemText(IDC_EDIT1,url);  // IDC_EDIT1 是一个输入框的名字。<br />    char* headers

每天进步一点点,踏踏实实向着理想迈进 1307

4、高级认证解决方案:Active Directory、LDAP、RADIUS和TACACS+深度解析

本文深入解析了多种高级认证解决方案,包括Active Directory、标准LDAP、RADIUS和TACACS+,涵盖其技术优势、配置步骤及适用场景。同时介绍了如何实现通用用户管理,包括使用第三方认证解决方案和ADSI自助用户管理。通过实际案例部署,展示了如何高效、安全地管理大规模用户认证与权限控制,为企业安全架构提供参考。

o4p5q6r7s的博客 306

在VC平台上抓取网页

出于对之后找工作的考虑,最近决定将实验的编码工作都转到C++上来做。本来想所有的程序都在linux平台下编写,但是GCC糟糕的代码调试功能让我望而却步。唉,因此决定,简单的算法练习在GCC下做。实验中的工程就在VC平台上做。 之前在Java上的网页抓取程序需要重新写,因此在网络上进行了检索,找到了相应的源码,自己使用后,留在这里给自己备忘。 /* crawl the HTML code fr

2157

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

使用CInternetSession 获取网页内容。。。解决了ReadString时的乱码

CInternetSession session; CHttpFile *file = NULL; CString strURL = _T("http://www.baidu.com"); CString strHtml = _T(""); //存放网页数据 try { file = (CHttpFile*)session.OpenURL(strURL); } catch(CInternetExc

rztyfx的专栏 2131

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

VC获取网页--CInternetSession的使用

1. CInternetSession的简单使用 CInternetSession session; CHttpFile *file = NULL; CString strURL = " http://www.20abcd.com"; CString strHtml = "”;   //存放网页数据   try{        file = (CHttpF

邓俊宥 1172

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

VC获取网页内容

<br /> <br />CString getHTML(CString strURL) { CInternetSession mySession(NULL, 0); CString m_strHTML, myData; CHttpFile *myHttpFile = NULL; myHttpFile=(CHttpFile *)mySession.OpenURL(strURL); while(myHttpFile->R

haart的专栏 2050

VC获取网页html

利用CInternetSession类,VC可以实现获取到指定网页的html。使用类CInternetSession 创建并初始化一个或多个同时的Internet 会话。然后使用CHttpFile类获取有类CInternetSession 得到的html。首先,当然是先创建这两个对象了并初始化了,直接上代码:Code: CInternetSession myS

1063

VC获取网页源码的三种方式

VC获取网页源码的三种方式 //有三种方法 '方法一(只适用于MFC工程): //参数URL:网页地址 //返回CString就是网页源码 //返回的网页源码是UTF8格式,要转成ANSI等编码才能正常显示 #include CString GetWebSource(CString URL) {     CInternetSession Session(NULL,0);

wjhtu_csdn的博客 1146
上一篇: web上用Activex控件开发步骤(MFC) 博客分类: HTML & AJAX
下一篇: vc创建一个线程的方法
msbbc
博客等级 码龄18年 39粉丝 8原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值