С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/40: Рейтинг темы: голосов - 40, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 21.12.2014
Сообщений: 6

Получение html кода страницы

23.12.2014, 00:41. Показов 7525. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Значит, мне нужно получить html код указанной страницы. Однако я, не удосужившись изучить основы и не имея ни малейшего представления о сокетах в C++ решил на эту тему поискать что-нибудь в гугле. И нашел, на этом же форуме, код некого Danvern-а.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
#include <fstream>
#include <windows.h>
#include <winsock.h>
#include <stdio.h>
 
WSADATA ws;
SOCKET s;
struct sockaddr_in addr;
hostent *d_addr;
char text[128];
 
int main()
{
 
   char buffer[999999];
 
    (FAILED (WSAStartup (MAKEWORD( 1,1 ), &ws))) ;
  s = socket (AF_INET, SOCK_STREAM, 0);
   d_addr = gethostbyname ("goatghosts.000a.biz");
    addr.sin_family = AF_INET;
     addr.sin_addr.s_addr = *((unsigned long *) d_addr->h_addr);
      addr.sin_port = htons (80);
       (connect (s, (sockaddr *) &addr,sizeof (addr)));
       strcpy(text,"GET / HTTP/1.1\n");
      strcat(text,"Host: goatghosts.000a.biz\n");
     strcat(text,"\n");
    send(s,text,strlen(text),0);
  recv(s, buffer, sizeof(buffer),0);
 
  std::cout << buffer;
 
closesocket(s);
 
  return 0;
}
Но тут у меня возникла небольшая проблема. Помимо вывода в консоль html кода страницы (да, мне действительно так нужна эта чертова единица), который вроде бы работает, в консоль выводится, насколько я понял, информация о сервере...или о запросе... в общем что-то помимо кода самой страницы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
HTTP/1.1 200 OK
 
Date: Mon, 22 Dec 2014 20:59:36 GMT
 
Server: ATS/4.2.2
 
Last-Modified: Mon, 22 Dec 2014 20:23:13 GMT
 
Accept-Ranges: bytes
 
Cache-Control: max-age=2592000, public, proxy-revalidate, public, proxy-revalidate
 
Expires: Wed, 21 Jan 2015 20:59:36 GMT
 
Vary: Accept-Encoding
 
Content-Type: text/html
 
Age: 743
 
Content-Length: 1
 
Connection: keep-alive
И вот такой вот вопрос: что мне нужно убрать, чтобы оставить на вывод только лишь код страницы?
Ну и дополнительно меня интересует способ присвоения полученного кода в переменную типа int...
Заранее спасибо!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.12.2014, 00:41
Ответы с готовыми решениями:

Получение html кода страницы
Помогите разобраться с получением html кода интернет страницы в приложении android, для последующего извлечения из неё информации.

Получение html кода страницы
Здраствуйте, как получать через webBrowser код я знаю, а можно обойтись как нибудь без него, чтоб в коде переходил на сайт и проделывал...

Получение HTML кода страницы
Добрый день. Написал программу: Const INTERNET_OPEN_TYPE_PRECONFIG = 0 Const INTERNET_OPEN_TYPE_DIRECT = 1 Const...

5
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
23.12.2014, 00:47
о каком коде идет речь? код результата запроса? если да, то можно пропарсить первую строку: HTTP/1.1 200 OK.
200 - это код, когда все ок. другие коды легко гуглятся.
0
0 / 0 / 0
Регистрация: 21.12.2014
Сообщений: 6
23.12.2014, 00:54  [ТС]
Да, мне нужно полностью отбросить код результата запроса. Так, чтобы он вообще не выводился.
Вопрос: как это сделать?
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
23.12.2014, 01:14
заголовок от контента отделается последовательностью "\r\n\r\n", поэтому в буфере ищите ее и все, что за ней - это контент. или я не понял что вам нужно.
кстати, не факт что за одно чтение прочитается все, что нужно. возможно несколько раз придется это делать. вот для яндекса например пришлось подогнать 6 операций чтения. и не факт что на других машинах будет то же количество.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include <fstream>
#include <windows.h>
#include <winsock.h>
#include <stdio.h>
 
WSADATA ws;
SOCKET s;
struct sockaddr_in addr;
hostent *d_addr;
char text[128];
 
int main()
{
 
  char buffer[999999] = {0};
 
  (FAILED (WSAStartup (MAKEWORD( 1,1 ), &ws))) ;
  s = socket (AF_INET, SOCK_STREAM, 0);
  d_addr = gethostbyname ("ya.ru");
  addr.sin_family = AF_INET;
  addr.sin_addr.s_addr = *((unsigned long *) d_addr->h_addr);
  addr.sin_port = htons (80);
  (connect (s, (sockaddr *) &addr,sizeof (addr)));
  strcpy(text,"GET / HTTP/1.1\n");
  strcat(text,"Host: goatghosts.000a.biz\n");
  strcat(text,"\n");
  send(s,text,strlen(text),0);
  int recvCount = 0;
  for (int i = 0; i < 6; ++i)
  {
    recvCount = recv(s, buffer, sizeof(buffer),0);
    std::cout << buffer;
    memset(buffer, 0, sizeof(buffer));
  }
 
  closesocket(s);
  return 0;
}
0
0 / 0 / 0
Регистрация: 21.12.2014
Сообщений: 6
23.12.2014, 01:52  [ТС]
Ну, хорошо. У меня на бесплатном хостинге лежит веб-страница, содержащая в себе один лишь символ (единицу), поэтому для ее вывода никакие циклы, я думаю, не нужны. Сейчас мне нужно только присвоить эту единицу в качестве значения какой-либо переменной. И я был бы не против получить помощь.
Суть программы должна быть в том, чтобы изменять переменную, заменяя ее значение html кодом страницы. А результат запроса я пытаюсь отбросить, чтобы он просто не мешался. Вот для чего все это затевается.
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
24.12.2014, 00:24
заголовок от контента отделается последовательностью "\r\n\r\n"
что тут непонятного. читаете все в буффер. в буффере ищете последовательность "\r\n\r\n" и все, что за ней - контент. в случае с тем же яндексом контент это <!DOCTYPE....
в вашем случае будет еденичка.
найти подстроку в строке - это лишь вызов правильной функции. если загнать буфер в std::string, то можно пользовать метод std::string::find, наверняка есть и сишный вариант подобной функции но я его не помню.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.12.2014, 00:24
Помогаю со студенческими работами здесь

Получение HTML-кода страницы
Всем доброго времени суток. У меня опять проблема.) Дело вот в чем. Мне надо получить HTML код страницы. private void...

Получение полного кода HTML страницы
Добрый день. Через QNAM нормально получаю код целевой страницы, но не весь. Страница использует java-скрипты, насколько я понимаю. Через...

Получение исходного кода html страницы
Здравствуйте, интересует собственно как например в Memo получить исходный код указанной страницы. Искал по форумам, но ничего чтоб работало...

Получение html кода страницы из TWebBrowser
Собственно вопрос, как можно получить html код с TWebBrowser, если можно с комментариями, что есть что... Добавлено через 54 минуты ...

Получение html кода страницы в listbox
Вот что получилось: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru