Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.51/35: Рейтинг темы: голосов - 35, средняя оценка - 4.51
54 / 54 / 2
Регистрация: 04.03.2012
Сообщений: 495
1

Сохранение страниц сайтов в формате html

28.03.2012, 19:59. Показов 7073. Ответов 61
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
привет,ребят кто может помочь написать такую штуку,у нас есть файлик url.txt там адреса сайтов, скрипт ходит по адресам сайтов указанных в url.txt и сохраняет страницы этих сайтов в формате html.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.03.2012, 19:59
Ответы с готовыми решениями:

У 90% сайтов осталось по 10 страниц в индексе
Здравствуйте! У меня есть несколько сайтов (12), это сайты конкретных клиентов, т.е. полный уник...

Конструктор сайтов (продающихся страниц)
Приветствую всех. интересует вопрос по созданию конструктора лендингов. а именно, 1. на чем...

Сбор данных со страниц сайтов
Доброго времени суток! решил реализовать такую феньку: есть n-ное кол-во чужих сайтов. на этих...

Возврат сайтов и страниц после вылетов
Люди всем привет открывая данную тему прошу всем отписывать у кого появились сайты после вылетов из...

61
54 / 54 / 2
Регистрация: 04.03.2012
Сообщений: 495
04.04.2012, 21:00  [ТС] 41
Author24 — интернет-сервис помощи студентам
А может есть какие-то редакторы exe кода,ща погуглю

Добавлено через 3 минуты
Avazart писал в Codegear C++ Builder 2009
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
04.04.2012, 21:03 42
Можешь не искать, Visual не поддерживает vcl компоненты Builder-a(Rad Studio 2009)
1
54 / 54 / 2
Регистрация: 04.03.2012
Сообщений: 495
04.04.2012, 21:09  [ТС] 43
Avazart,а можешь скинуть ссылку(желательно чтобы размер был поменьше) на этот Rad Studio 2009
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
04.04.2012, 21:14 44
В торренте поищи.
1
54 / 54 / 2
Регистрация: 04.03.2012
Сообщений: 495
04.04.2012, 21:17  [ТС] 45
если будет около 150метров,тогда воще супер
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
04.04.2012, 21:25 46
Образ весит около 2 Гигов
1
54 / 54 / 2
Регистрация: 04.03.2012
Сообщений: 495
05.04.2012, 17:07  [ТС] 47
Ух ты,не лучше купить,а то неделя скачиваний мне не нужна))

Добавлено через 18 часов 28 минут
Avazart ну все-таки,можешь скинуть прогу с исправлениями,плиз

Добавлено через 52 минуты
ну,с сохранением в папку
0
54 / 54 / 2
Регистрация: 04.03.2012
Сообщений: 495
08.04.2012, 19:41  [ТС] 48
Avazart ,а вот такая штука подойдет embarcadero delphi и c++ builder 2010
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.04.2012, 19:44 49
Думаю да, при установке ставь только С++ думаю тебе delphi не нужен
1
54 / 54 / 2
Регистрация: 04.03.2012
Сообщений: 495
08.04.2012, 20:14  [ТС] 50
Спасибо,Avazart,а там прям открывать exe файл и сразу редактировать??
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.04.2012, 20:42 51
Файл->Открыть проект Project1.cbproj

Добавлено через 3 минуты
Читай документацию по Builder -у и читай Архангельского, есть также видео уроки...
1
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
08.04.2012, 20:45 52
Цитата Сообщение от vantyz Посмотреть сообщение
Спасибо,Avazart,а там прям открывать exe файл и сразу редактировать??
hex editor'ом
1
54 / 54 / 2
Регистрация: 04.03.2012
Сообщений: 495
08.04.2012, 22:14  [ТС] 53
или как?

Добавлено через 4 минуты
Nekto а можешь,кинуть ссылку ,на скачку этого hex editor

Добавлено через 1 час 8 минут
Avazart все изменил,работает))сохраняет в папку

Добавлено через 53 секунды
и эти hex editorЫ не нужны
0
54 / 54 / 2
Регистрация: 04.03.2012
Сообщений: 495
13.04.2012, 22:36  [ТС] 54
Кстати,в коде который мне любезно предоставил igorrr37,я его запустил ,(буст при этом установил , если что он у меня версии 1.45),вот фото ошибки,как исправить не знаю.

Сохранение страниц сайтов в формате html
0
54 / 54 / 2
Регистрация: 04.03.2012
Сообщений: 495
13.04.2012, 22:38  [ТС] 55
Помогите плиз,текстовый файлик я создал если что,наверно версия буста не подходит,а может и нет
0
2848 / 1997 / 986
Регистрация: 21.12.2010
Сообщений: 3,705
Записей в блоге: 10
14.04.2012, 09:15 56
на VS2008 + boost 1.45.0 вот этот код работает
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#include "stdafx.h"
#include <iostream>
#include <string>
#include <fstream>
#include <boost/regex.hpp>
#include <boost/asio.hpp>
#include <windows.h>
#include <boost/scope_exit.hpp>
typedef boost::asio::ip::tcp tcp;
 
class HttpDownloader
{
public:
    HttpDownloader() : sock(io), resolver(io), reqStream(&buf), respStream(&buf){}
    int Download(const std::string& uri_, const std::string& pathToSave = "")
    {
        uri = uri_;
        BOOST_SCOPE_EXIT((&sock)(&err)(&buf))
        {
            if(sock.shutdown(tcp::socket::shutdown_both, err))
            {
                std::cerr << "sock_shutdown() failed: " << err.message() << std::endl;
            }
            sock.close();
            buf.consume(buf.size());
            std::cout << "resources released\n\n";
        } BOOST_SCOPE_EXIT_END;
        while(true)
        {
            if(ParseUri())
            {
                std::cerr << "ParseUri() failed\n";
                return __LINE__;
            }
            tcp::resolver::query q(url, "http");
            tcp::resolver::iterator it = resolver.resolve(q, err), itEnd;
            if (err)
            {
                std::cerr << "resolve() failed:\n" << err.message() << "\n";
                return __LINE__;
            }
            err = boost::asio::error::host_not_found;
            while (err && it != itEnd)
            {
                sock.close();
                sock.connect(*it++, err);
            }
            if (err)
            {
                std::cerr << "connect() failed:\n" << err.message() << "\n";
                return __LINE__;
            }
            reqStream << "GET " << urn << " HTTP/1.0\r\n"
                    << "Host: " << url << "\r\n"
                    << "Connection: close\r\n\r\n";
            boost::asio::write(sock, buf);
            boost::asio::read_until(sock, buf, boost::regex("(?:\r\n){2,}"));
            std::string headers, tmp;
            while(std::getline(respStream, tmp) && tmp!="\r")
            {
                headers += (tmp + '\n');
            }
            std::cout << headers << "\n";
            if (!boost::regex_search(headers, res, boost::regex("HTTP/\\d\\.\\d +\\d{3}.*\r")))
            {
                std::cerr << "\nUnexpected starting line" << std::endl;
                return __LINE__;
            }
            if(boost::regex_search(headers, res, boost::regex("Location: ([^ \r]+)")))
            {
                uri = res[1];
                std::cout << "Trying use new uri:\n" << uri << "\n\n";
                buf.consume(buf.size());
            }
            else break;
        }
        if(!boost::regex_search(urn, res, boost::regex("/([^\\Q/:<>\"\\|?*\\E]*)[^/]*$")))
        {
            std::cerr << "urn parsing failed\n";
            return __LINE__;
        }
        std::string filePath = (pathToSave.empty() ? res[1] : pathToSave);
        if(filePath.find('.') == std::string::npos) filePath += "_.html";
        std::cout << "filePath : " << filePath << "\n";
        std::ofstream ofs(filePath.c_str(), std::ios::binary);
        if (!ofs) {std::cerr << "Can't create file\n"; return __LINE__;}
        if(buf.size()) ofs << &buf;
        while (boost::asio::read(sock, buf, boost::asio::transfer_at_least(1), err))
        {
            ofs << &buf;
        }
        ofs.close();
        if (err != boost::asio::error::eof)
        {
            std::cerr << "read() failed\n" << err.message() << "\n";
            return __LINE__;
        }
        return 0;
    }
private:
    int ParseUri()
    {
        if (!boost::regex_match(uri, res, boost::regex("(?:[url]http://)?([/url][^/]+)(.*)" ))) return 1;
        url = res[1];
        if ((urn = res[2]).empty()) urn = "/";
        return 0;
    }
    std::string uri, url, urn;
    boost::smatch res;
    boost::asio::io_service io;
    tcp::socket sock;
    tcp::resolver resolver;
    boost::system::error_code err;
    boost::asio::streambuf buf;
    std::ostream reqStream;
    std::istream respStream;
};
 
int main(){
    SetConsoleOutputCP(1251);
    try
    {
        std::ifstream ifs("1.txt");
        if(ifs)
        {
            HttpDownloader d;
            std::string sUri;
            while(std::getline(ifs, sUri))
            {
                d.Download(sUri);
            }
        }
        else std::cerr << "Can't open file\n";
        ifs.close();
    }
    catch (const std::exception& e)
    {
        std::cerr << "Exception:\n" << e.what() << std::endl;
    }
    std::cin.get();
    return 0;
}
Миниатюры
Сохранение страниц сайтов в формате html  
1
54 / 54 / 2
Регистрация: 04.03.2012
Сообщений: 495
16.04.2012, 17:04  [ТС] 57
а на десятой студии мне просто обновить может буст,или лучше скачать студию 8??

Добавлено через 1 час 10 минут
Как лучше?
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
16.04.2012, 18:05 58
Как я помню Visual не идет в комплекте с boost, так что в любом случае boost устанавливать надо
1
54 / 54 / 2
Регистрация: 04.03.2012
Сообщений: 495
25.04.2012, 18:27  [ТС] 59
Avazart слушай ,вот программка скачивает страницы, юрл их указан в текстовом файле ,а как сделать ,чтобы прога скачивала вообще все страницы сайтов(типо если в тексовом файле указано http:\\dom.com\,то программа скачает и http:\\dom.com\about.html ну вообще все страницы с сайтов)

Добавлено через 9 часов 10 минут
Кстати я вот скачал vs 2008 ,и пробовал запустить, вот какую ошибку выдает


"LINK : fatal error LNK1104: не удается открыть файл ''libboost_regex-vc90-mt-gd-1_45.lib''
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
25.04.2012, 21:57 60
Взять значения из сайта
В конце темы выложена прога.
Это правда на Builder2009 написано, но там применяется boost/regex для парсинга
Ищет все ссылки, остается реализовать только скачивание.
1
25.04.2012, 21:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.04.2012, 21:57
Помогаю со студенческими работами здесь

Вопрос про количество страниц и сайтов
Приветствую. Все вы конечно знаете, что при просмотре беков выдается результат - &quot;страниц -...

Изменение страниц сторонних сайтов на лету
Если не в тот раздел пишу, сори! Веб программированием занимаюсь не давно, так что не судите...

кол-во страниц и сайтов как влияют на PR
Беру таблицу http://xap.ru/google-pr.php Анализирую сайт, пример утрированный...

CGI. Как получить данные из html формы и отослать данные клиенту в html формате?
Господа помогите с cgi. Никогда этого не делал под VB, а сейчас очень надо. Как получить данные из...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru