Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/39: Рейтинг темы: голосов - 39, средняя оценка - 4.85
43 / 7 / 0
Регистрация: 16.09.2009
Сообщений: 115

Чтение html из url

16.09.2009, 16:38. Показов 7897. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
последний раз в builder`e лабал давно, и изрядно подзабыл
вопрос - как подключиться к инету и прочитать страницу?
помню, есть там компонент socket, но как юзать - забыл
например, есть страница - http://www.12345.ru/index.html - как открыть на чтение?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.09.2009, 16:38
Ответы с готовыми решениями:

Чтение данных из URL
Всем привет, как правильно можно считать данные из URL, если использую такую конструкцию получаю HTMLку, как вытянуть координаты ячеек. ...

Чтение из файла по URL
Доброе время суток! делаю так: Dim FStreamRead As IO.StreamReader =...

Чтение файла по url
Подскажите искал на форуме есть тока чтение из файла лежащего на диске как прочесть файл http://gwergrgr.fg/News.txt и запихать его в...

12
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
16.09.2009, 16:41
Получение форматированной HTML-страницы
0
49 / 49 / 4
Регистрация: 21.05.2009
Сообщений: 156
16.09.2009, 21:37
Используй Indy

C++
1
IdHTTP1->Get("http://www.12345.ru/index.html");
0
43 / 7 / 0
Регистрация: 16.09.2009
Сообщений: 115
17.09.2009, 11:16  [ТС]
вот эта тема отлично работает:
3.4. И самый простой вариант.
Воспользоваться ф-ией URLDownloadToFile. Необходимо включить хедер urlmon.h и подключить к проекту файл $(BCB)\LIB\PSDK\urlmon.lib
C++
1
URLDownloadToFile( 0, "http://www.yandex.ru", "c:\\temp\myfile.html", 0, 0);
но есть одна засада:
URLDownloadToFile хочет получать в аргументах только "const char"
а, например, TEdit->Text - имеет тип AnsiString
как бы это обойти, что бы по-очереди качать с разных адресов в разные файлы?
0
5 / 5 / 0
Регистрация: 14.08.2009
Сообщений: 42
17.09.2009, 11:53
Цитата Сообщение от any_stuff Посмотреть сообщение
вот эта тема отлично работает:

но есть одна засада:
URLDownloadToFile хочет получать в аргументах только "const char"
а, например, TEdit->Text - имеет тип AnsiString
как бы это обойти, что бы по-очереди качать с разных адресов в разные файлы?
попробуй так:

C++
1
2
3
    AnsiString address = Edit1->Text, path = OpenDialog1->FileName;
    
    URLDownloadToFile( 0, address.c_str(), path.c_str(), 0, 0);
... думаю работать должно...
0
43 / 7 / 0
Регистрация: 16.09.2009
Сообщений: 115
13.11.2009, 17:43  [ТС]
в общем-то, всё работает (файл скачивается), однако программа при этом висит
и при попытке выхода вылетает с ошибкой
погуглив, наткнулся на ветку:
http://johnfaustov.narod.ru/in... .htm#28171
там советуют засунуть URLDownloadToFile в отдельный поток, но там - про delphi
а как это сделать на c++?
так же нашёл, что последний ноль в параметрах функции - это
"A pointer to the IBindStatusCallback interface of the caller"
возник вопрос - а как бы запихнуть сведения о соединении в StatusBar?
0
0 / 0 / 0
Регистрация: 23.05.2008
Сообщений: 5
06.12.2009, 04:20
Цитата Сообщение от ndaleksey Посмотреть сообщение
попробуй так:

Код C++
AnsiString address = Edit1->Text, path = OpenDialog1->FileName;
URLDownloadToFile( 0, address.c_str(), path.c_str(), 0, 0);

... думаю работать должно...
Не работает. Линкер выдает такую вот ошибку
[Linker Error] Unresolved external 'URLDownloadToFileA' referenced from D:\CPPPROJECTS\VK2011\UNIT2.OBJ
Как бы это победить?
0
14 / 14 / 1
Регистрация: 18.09.2009
Сообщений: 45
06.12.2009, 21:24
Цитата Сообщение от any_stuff Посмотреть сообщение
в общем-то, всё работает (файл скачивается), однако программа при этом висит
кинь на форму компонент NMHTTP с вкладки FastNet и, например:
Code
1
2
3
4
5
6
void __fastcall TmainForm::Button1Click(TObject *Sender){
 
   NMHTTP1->Get("http://www.12345.ru/index.html");
   RichEdit1->Text = NMHTTP1->Body;
 
}
и не будет ничего виснуть!
0
43 / 7 / 0
Регистрация: 16.09.2009
Сообщений: 115
06.12.2009, 23:27  [ТС]
Цитата Сообщение от mega_b00m Посмотреть сообщение
Не работает. Линкер выдает такую вот ошибку
[Linker Error] Unresolved external 'URLDownloadToFileA' referenced from D:\CPPPROJECTS\VK2011\UNIT2.OBJ
Как бы это победить?
project->add to project...
C:\Program Files\CodeGear\RAD Studio\6.0\lib\psdk\urlmon.lib

Добавлено через 2 минуты
Цитата Сообщение от Save.L Посмотреть сообщение
кинь на форму компонент NMHTTP с вкладки FastNet
нет в rad studio 2009 ни NMHTTP, ни вкладки FastNet
0
 Аватар для DrSMERTb
64 / 40 / 10
Регистрация: 12.11.2010
Сообщений: 841
09.07.2012, 18:31
Цитата Сообщение от ndaleksey Посмотреть сообщение
AnsiString address = Edit1->Text, path = OpenDialog1->FileName; URLDownloadToFile( 0, address.c_str(), path.c_str(), 0, 0);
Как это всё дело засунуть в отдельный поток я знаю, но не пойму как отсюда изъять скачивается ли файл или нет подключения к нету и ещё как сюда прогрессбар прикрутить? Кто знает подскажите.)
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
09.07.2012, 20:05
Как уже советывали выше проше всего через IdHTTP можно отпралять POST,GET сохранять данныйе в файл или в переменную обрабатывать ошибки, перенаправления итп.

Как альтернатива прикрутить библиотеку curl ( кроссплатформеную )

Можно также использовать компонент cppWebBrowser,сокеты,Wininet,boost/asio идр. т.е вариантов туча.
1
 Аватар для DrSMERTb
64 / 40 / 10
Регистрация: 12.11.2010
Сообщений: 841
09.07.2012, 20:10
Да уже примерно разобрался, осталось только найти как ошибку выдать если нет не подрублен, вот что получилось:
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
UnicodeString URL_DOWNLOAD ="http://траляля/123.rar";
UnicodeString FILE_NAME = "C:\\Users\\DrSMERTb\\Desktop\\123.rar";
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
__fastcall TTestThread::TTestThread(bool CreateSuspended)
    : TThread(CreateSuspended)
{
}
//---------------------------------------------------------------------------
void __fastcall TTestThread::SM() {
 
}
//---------------------------------------------------------------------------
void __fastcall TTestThread::Execute()
{
Synchronize(&SM);
TFileStream* FILE_STREAM = new TFileStream(FILE_NAME, fmCreate | fmOpenWrite);
Form1->IdHTTP1->Get(URL_DOWNLOAD, FILE_STREAM);
delete FILE_STREAM;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TTestThread *TestThread = new TTestThread(true);
TestThread->Suspended = false;
TestThread->FreeOnTerminate = true;
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::IdHTTP1WorkBegin(TObject *ASender, TWorkMode AWorkMode, __int64 AWorkCountMax)
 
{
ProgressBar1->Max = AWorkCountMax;
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::IdHTTP1Work(TObject *ASender, TWorkMode AWorkMode, __int64 AWorkCount)
 
{
ProgressBar1->Progress = AWorkCount;
}
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
09.07.2012, 20:15
Вобщем случае для Indy:

C++
1
2
3
4
5
try
 { 
   IdHTTP1->Get(/*...*/); 
 }
catch(EIdException &E) { ShowMessage(E.Message);}
Главное не забыть освободить динамически созданные объекты с учетом исключений. Поэтому я бы использовал std::auto_ptr<>

Более подробно можешь посмотреть исключения здесь Взять значения из сайта там программа выложена- корявая, с ошибками, но там есть исключения которые следовало бы ловить.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.07.2012, 20:15
Помогаю со студенческими работами здесь

чтение id url'a и добавление его в базу
Здравствуйте. Вот имеется страница с url view_article.php?id=12. id получается в коде отображения страницы. В БД таблица с новостями...

Чтение GET из URL, изменение кода скрипта
Всем привет. Я гулял по интернету и смотрел исходники сайтов. Наткнулся на такую интересную фичу: Некоторые скрипты подключают с...

Проверки URL в HTML
Здравствуйте! Есть HTML страницы, хранящиеся на жестком диске. Все ссылки на &quot;свой же сайт&quot; относительны. Остальные (ссылки на...

.html в конце URL
Добрый вечер! Столкнулся с проблемой, в конце URL .html, как его убрать ?

Поиск url в html
Приветствую всех. помогите справиться с проблемкой. Никак не могу подобрать регулярное выражение для выдергивания всех линков вида &lt;a...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru