Как отобразить исходный код сайта в консольном приложении? - PullRequest
0 голосов
/ 04 января 2012

Думаю, этот вопрос несколько широк, но я пытаюсь создать консольное приложение C (на Windows OS), которое позволяет пользователю вводить адрес веб-сайта, и приложение выводит исходный код на экран.

Во-вторых, мне пришлось перейти к исходному коду сайта для извлечения некоторого содержимого.

Учитывая, что я знаю, как кодировать на C (или C ++), знаю, как анализировать вводимые пользователем данные по действительному веб-адресуи что я знаю, как перейти к файлу, существует ли какая-либо библиотека C, которая позволяет мне выполнять часть данных, передаваемых через веб-сайт, например, их исходный код (HTML)?

Большое спасибо!:)

Обновление: библиотеки C ++ также приняты, но, пожалуйста, покажите пример того, как выполнить часть извлечения исходного кода или ссылки, возможно, спасибо:)

Ответы [ 5 ]

4 голосов
/ 04 января 2012

Curl .Или для C ++ curlpp .

0 голосов
/ 21 февраля 2015

Это небольшая программа, которую я сделал для извлечения и сохранения / записи исходного кода учетной записи 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.txt с помощью файла temp.html, откройте его в браузере, и вы получите эту веб-страницу.

0 голосов
/ 04 января 2012

попробуйте, может быть:

система ("URL2FILE-источник файлов");

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

0 голосов
/ 04 января 2012

Вы можете попробовать что-нибудь с помощью telnet. Если вы подключаетесь к серверу с помощью telnet через порт 80, введите

GET /<webpage.htm> HTTP/1.1

и дважды нажмите клавишу ввода, вы получите полный ответ HTTP и исходный HTML-код веб-страницы.

Надеюсь, это поможет!

0 голосов
/ 04 января 2012

Я не уверен, есть ли какая-либо стандартная библиотека C для загрузки содержимого сайта.Но я думаю, вам нужно что-то вроде wget.Например, попробуйте следующее:

wget http://stackoverflow.com/

Содержимое веб-сайта будет сохранено в index.html.

OTOH, вы можете исследовать libcurl здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...