zoukankan      html  css  js  c++  java
  • C++抓网页/获取网页内容

    #include<windows.h>

    #include<Wininet.h>

    #include<iostream>

    #include<fstream>

    #include<string>

    #pragma comment(lib,"WinInet.lib")

    using namespace std;

    int main()

    {

        HINTERNET hINet, hHttpFile;               

        char szSizeBuffer[32];

        DWORD dwLengthSizeBuffer = sizeof(szSizeBuffer);

        hINet = InternetOpen("IE6.0", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0 );    //InternetOpen初始化WININET.DLL

        string url = "http://www.sina.com";          //抓新浪网

        if ( !hINet )

        {

            cout << "InternetOpen fail" << endl;

            return 1;

        }

        hHttpFile = InternetOpenUrl(hINet, url.c_str(), NULL, 0, 0, 0);  //这个函数连接到一个网络服务器上并且最被从服务器上读取数据

        if(!hHttpFile)

        {

            cout << "error open url" << endl;

            return 1;

        }

        BOOL bQuery = HttpQueryInfo(hHttpFile,

                                    HTTP_QUERY_CONTENT_LENGTH,

                                    szSizeBuffer,

                                    &dwLengthSizeBuffer, NULL); //得到关于文件的信息

        if(bQuery ==false)

        {

            InternetCloseHandle(hINet); 

            cout << "error query info" << endl;

            return 3;

        }

        int FileSize=atol(szSizeBuffer);    //atol函数把字符串转换成长整型数

        string revData;

        revData.resize(FileSize);

        DWORD dwBytesRead;

        BOOL bRead = InternetReadFile(hHttpFile, &revData[0], FileSize, &dwBytesRead);     //web浏览器将在InternetReadFile上循环 ,不停地从Internet上读入数据块。

        if(!bRead)

        {

            cout << "error to read file" << endl;

            return 4;

        }

        ofstream   out_file("duhui.txt");   

        out_file << revData;              //输出到文件

        InternetCloseHandle(hHttpFile);   //关闭句柄

        InternetCloseHandle(hINet);

        cout << "抓取成功!/n" << endl;

        system("pause");

        return 0;

    }

    只有想不到,没有做不到!!!
    鸿鹄IT网络学院
  • 相关阅读:
    【QQ空间转移】C/C++函数的调用约定
    【QQ空间转移】BIG Endian 和 Little Endian模式
    【QQ空间转移】友元函数
    【QQ空间转移】和室友争论所瞎想的
    【QQ空间转移】银行同业拆借
    【QQ空间转移】票据和债券
    js实现给数字加三位一逗号间隔的两种方法
    js获取上个月第一天
    获取所选月份指定时间范围
    PLSQL 11 注册码
  • 原文地址:https://www.cnblogs.com/zhongbin/p/3178546.html
Copyright © 2011-2022 走看看