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

Чтение html из url

16.09.2009, 16:38. Показов 7889. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru