如何在控制台应用程序中显示网站的源代码?

时间:2012-01-04 15:18:41

标签: c++ c web

我想这个问题有点宽,但我正在尝试创建一个C控制台应用程序(在Windows操作系统上),让用户输入网站地址,应用程序将在屏幕上输出源代码。

第二个是让我遍历网站源代码以提取一些内容。

鉴于我知道如何使用C(或C ++)进行编码,知道如何解析用户对有效网址的输入以及我知道如何遍历文件, 是否有任何C库允许我通过网站获取数据,例如它的源代码(HTML)?

非常感谢! :)

更新:C ++库也已经出现了,但是请展示如何提取它的源代码或链接的部分示例,谢谢,谢谢  :)

5 个答案:

答案 0 :(得分:4)

cURL。或者,对于C ++,curlpp

答案 1 :(得分:0)

我不确定是否有任何C标准库来获取网站内容。但我想你需要像wget这样的东西。例如,尝试以下操作:

wget http://stackoverflow.com/

网站内容将存储在index.html中。

OTOH,您可以探索libcurl here

答案 2 :(得分:0)

您可以尝试使用telnet。如果在端口80上连接到telnet的服务器,请键入

GET /<webpage.htm> HTTP/1.1

然后按两次回车键,您将获得完整的HTTP回复和网页的html源代码。

希望这有帮助!

答案 3 :(得分:0)

尝试一下:

system(“URL2FILE filesource filedestination”);

http://www.chami.com/free/url2file_wincon.html

答案 4 :(得分:0)

这是一个小程序,我提取&amp;在文本文件中保存/编写Facebook帐户源代码。您可以根据需要进行更改(您可以使用“http://www.facebook.com”更改“http://www.google.com/”)。还要记住将wininet.a(库)链接到您的项目。希望它会有所帮助:)

#include <windows.h>
#include <wininet.h>
#include <iostream>
#include <conio.h>
#include <fstream.h>
fstream fs_obj;
using namespace std;

int main(int argc, char *argv[])
{
  fs_obj.open("temp.txt",ios::out | ios::app);  
  HINTERNET hInternet = InternetOpenA("InetURL/1.0", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0 );
  HINTERNET hConnection = InternetConnectA( hInternet, "www.facebook.com", 80, " "," ", INTERNET_SERVICE_HTTP, 0, 0 ); //enter url here
  HINTERNET hData = HttpOpenRequestA( hConnection, "GET", "/", NULL, NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION, 0 );

  char buf[ 2048 ] ; string total;
  HttpSendRequestA( hData, NULL, 0, NULL, 0 ) ;
  DWORD bytesRead = 0 ;
  DWORD totalBytesRead = 0 ;

  while( InternetReadFile( hData, buf, 2000, &bytesRead ) && bytesRead != 0 )
  {
    buf[ bytesRead ] = 0 ; // insert the null terminator.
    total=total+buf;
    printf( "%d bytes read\n", bytesRead ) ;

    totalBytesRead += bytesRead ;
  }

  fs_obj<<total<<"\n--------------------end---------------------\n";
  fs_obj.close();
  printf( "\n\n END -- %d bytes read\n", bytesRead ) ;
  printf( "\n\n END -- %d TOTAL bytes read\n", totalBytesRead ) ;
  cout<<total; //it will print source code in console window
  cout<<endl<<total<<endl; //it will save source code to (temp.txt) file
  InternetCloseHandle( hData ) ;
  InternetCloseHandle( hConnection ) ;
  InternetCloseHandle( hInternet ) ;
  system("pause");
}

使用temp.html重命名temp.txt,使用浏览器打开它,您将获得该网页。