С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
0 / 0 / 1
Регистрация: 18.07.2015
Сообщений: 12

Нужно скачать страницу сайта без браузера

12.10.2015, 21:18. Показов 2721. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! у меня такая проблема! нужно скачать страницу сайта. пробовал сделать на сокетах но не получается сделать правильный запрос. подскажите пожалуйста варианты как можно выполнить поставленную задачу. необязательно работать с сокетами, главное чтобы получилось загрузить и не нужно было ничего дополнительного устанавливать на компьютер

Добавлено через 41 секунду
вот код моей программы
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
 
SOCKET xopen(const char* address, unsigned short port);
int xwrite(SOCKET sock,const char* src, int size);
int xread(SOCKET sock, char* dst, int size);
 
int main(void)
{
    //HTTP запрос для получения страницы текущей темы этого форума
    char* http=" Get / HTTP/1.0\r\n"
        "Host: http://www.narod.ru\r\n"
        "Accept:text/html\r\n"
        "Connection: close\r\n\r\n";
    int res;
    SOCKET sock;
    FILE* fp;
    char buf[4096];
    WSADATA data;
 
    if(WSAStartup(MAKEWORD(2,0), &data) != 0)
        exit(1);
 
    sock=xopen("www.narod.ru",80);
    if(sock==NULL)
        exit(2);
    puts("Connection server...");
// посылаем HTTP запрос серверу
    if((xwrite(sock, http, strlen(http))))
        puts("Start upload data...");
    else
        goto error;
 
    Sleep(1000u);
// читаем страницу по 4 кб
    fp= fopen("D:\\tmp.html","w+");
 
    while((res=xread(sock,buf,strlen(buf)))>0)
    {
        buf[res]='\0';
        fwrite(buf,sizeof(char),strlen(buf),fp);
    }
    fflush(fp);
    fclose(fp);
 
    puts("Finish uploaden file.");
error:
    closesocket(sock);
    WSACleanup();
 
    getchar();
    return 0;
}
 // функция по установке соединения с сервером
SOCKET xopen(const char* address, unsigned short port)
{
    SOCKET sock;
    sockaddr_in addr;
    hostent* host=NULL;
 
    memset(&addr,0,sizeof(sockaddr_in));
    addr.sin_family=AF_INET;
    addr.sin_port=htons(port);
    host=gethostbyname(address);
    if(host==NULL)
        return NULL;
    memcpy(&addr.sin_addr, host->h_addr_list[0], host->h_length);
 
    sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
    if(sock==INVALID_SOCKET)
        return NULL;
    if(connect(sock,(sockaddr*)&addr, sizeof(sockaddr_in))==SOCKET_ERROR)
        return NULL;
    return sock;
}
// посылка данных к серверу
int xwrite(SOCKET sock,const char* src, int size)
{
    return(send(sock,src,size,NULL)==SOCKET_ERROR)?0:1;
}
// чтения данных с сервера
int xread(SOCKET sock,char* dst, int size)
{
    int res=recv(sock,dst,size,NULL);
    if(res==SOCKET_ERROR)
        return -1;
    return res;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.10.2015, 21:18
Ответы с готовыми решениями:

Скачать Страницу С Сайта.
Надеюсь, никто из модераторов не будет против, что я создал ветку в двух разделах. Но тема смежная, а сразу два раздела, я думаю, не читает...

Как скачать страницу сайта?
привет всем, интересует такой вопрос: как скачать целиком страницу сайта из браузера со всем js и css? при обычном скачивании через ctr +...

Скачать страницу сайта целиком
Задача такая - скачать целиком страницу web сайта. С++ QCC

7
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
13.10.2015, 10:27
Смотреть пример здесь. Там, правда, вывод в плюсовый string, но уж под Си как ни будь сами переделайте.
0
-3 / 11 / 5
Регистрация: 22.01.2011
Сообщений: 201
16.10.2015, 18:25
Смотреть пример здесь. Там, правда, вывод в плюсовый string, но уж под Си как ни будь сами переделайте.
Там код для VC вероятно там есть библиотека, у меня GCC от Min_GW немогу найти готового примера....
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
16.10.2015, 18:41
Цитата Сообщение от sfinexer Посмотреть сообщение
Там код для VC вероятно там есть библиотека, у меня GCC от Min_GW немогу найти готового примера....
Там код для curl, который никакого отношения к VC не имеет. Стандартной библиотеки для работы с сетью нет. Даже решение на сокетах стандартным не является. Попробуете перенести свой код на Линукс - сразу обнаружите что никаких WSAStartup там нет. Не говоря уже о том, что реализовывать на сокетах поддержку HTTP 1.1, HTTPS и куков - та еще морока. Если вы используете gcc через QtCreator, там есть встроеные библиотеки и можно использовать пример отсюда. Ну а если нет, то самый простой способ - ставить curl.
0
Задачи выполнил, ушёл
27 / 30 / 7
Регистрация: 16.10.2015
Сообщений: 345
17.10.2015, 22:16
Добавлю от себя...

C++
1
2
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
Нужно наоборот:
C++
1
2
#pragma comment(lib, "wsock32.lib")
#include "winsock2.h"
Если будете создавать "Пустой Проект" на C++, то в первом варианте будут ошибки компиляции, второй вариант рабочий, сам проверил это.
0
-3 / 11 / 5
Регистрация: 22.01.2011
Сообщений: 201
18.10.2015, 08:21
Ну как Вам скачазать....
D:\Doeload_web\main.cpp In function 'int main()':
12 95 D:\Doeload_web\main.cpp [Warning] ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
D:\Doeload_web\g++.exe [Error] curl: No such file or directory
D:\Doeload_web\g++.exe [Error] wsock32: No such file or directory
D:\Doeload_web\g++.exe [Error] wldap32: No such file or directory
25 D:\Doeload_web\Makefile.win recipe for target 'exe/Download_web_site.exe' failed
0
0 / 0 / 0
Регистрация: 21.07.2015
Сообщений: 19
03.11.2015, 20:51
Если тема актуальна, то у меня есть код с использованием libcurl, и код с использованием wininet. Если нужно пишите
0
-3 / 11 / 5
Регистрация: 22.01.2011
Сообщений: 201
03.11.2015, 20:52
Ну вобщето актуально и то и то.
Я в идеале хочю сделать программу для скачивания сатов там это основное,
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.11.2015, 20:52
Помогаю со студенческими работами здесь

Открыть веб страницу без браузера
Добрый день! Помогите реализовать одну штуку, видел программу, которая без открытого браузера обновляет одну и ту же указанную страницу...

Как скачать страницу сайта целиком?
интересует такой вопрос, как скачать страницу сайта если при обычном скачивании с браузера (сохранить как) сайт качается не полностью?

Как сделать так, чтобы на экране была страница сайта без панели задач и без меню браузера?
Ребят есть терминал который при включении открывает браузер и в нем портал . Но панель задач и верхнее окно браузера тоже открыт . Надо...

Скачать страницу сайта в Python так же, как это делает браузер
Суть задачи в общем как раз отражает заголовок. Детали: аргументами на вход подаём 1) url 2) системный путь (C:\Python34\site) ...

Ошибка (502) Недопустимый шлюз при попытке скачать страницу сайта
Нужно просто скачать страницу сайта в html файл, чтобы в будущем ее парсить... При попытке скачать вылетает исключение &quot;Удаленный...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru