Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > idHTTP1 и закачка стр. из ЯНДЕКС.ру


Автор: Pcrepair 25.12.2011, 18:57
Добрый день
Есть компонент idHTTP1, с помощью которого можно закачать код ХТМЛ-страницы, указав УРЛ страницы. В общем все работает (кроме фреймов, сайтов с редиректом, и есть проблемы со шрифтами)
НО, если задать адрес Ya.ru, выскакивает 301 ошибка и страница сервиса не загружается.
Вопрос для знатоков ИНДИ 10 (РАД2010):
1. если предварительно отослать запрос (через POST ввести словосочетание для поиска, ну скажем "купить телевизор") в строку ввода поиска на Яндексе, получится ли закачать первую страницу ответа Яндекса? Или всетаки нужно это делать через ТВебБраузер?
2. что то страницы с отдельных сайтов закачиваются с кракозябрами, или вообще тексты с кириллицей не закачиваются, закачиваются только то что написано латиницей. С этим что то сделать можно? Если можно, то как?
Всем ответившим по делу спасибо.

Автор: Akella 26.12.2011, 00:26
Свойство HandleRedirects?

Добавлено @ 00:27
Цитата(Pcrepair @  25.12.2011,  18:57 Найти цитируемый пост)
1. если предварительно отослать запрос (через POST ввести словосочетание для поиска, ну скажем "купить телевизор") в строку ввода поиска на Яндексе, получится ли закачать первую страницу ответа Яндекса? Или всетаки нужно это делать через ТВебБраузер?

получится

Добавлено через 1 минуту и 57 секунд
Цитата(Pcrepair @  25.12.2011,  18:57 Найти цитируемый пост)
2. что то страницы с отдельных сайтов закачиваются с кракозябрами, или вообще тексты с кириллицей не закачиваются, закачиваются только то что написано латиницей. С этим что то сделать можно? Если можно, то как?
Всем ответившим по делу спасибо. 

Перекодируй в нужную кодировку

Автор: Pcrepair 27.12.2011, 19:26
Решение задачи следующее:
Использование TStringStream для решения проблем с кодировкой
Код:
Код


var
  mStream: TStringStream;
  URL : string;
begin
 mStream := TStringStream.Create;
 URL := Edit1.Text;
 idHttp1 := TIdHTTP.Create(nil);
 idHttp1.Get(URL, mStream);
 Memo1.Clear;
 Memo1.Text := mStream.DataString; // вариант1, кодировка charset=windows-1251
  //или
 Memo1.Text := UTF8Decode (mStream.DataString); // вариант2, кодировка charset=UTF-8
end;

Результаты: код страницы в ПЕРЕМ типа TStringStream закачивается нормально, но может имееть две(или больше) разновидностей кодировки
1. если кодировка charset=windows-1251, то нужно использовать вариант1
2. если кодировка charset=UTF-8, то вариант1 (Utf8ToAnsi или UTF8Decode)
3. для универсальности нужен дополнительный код: вначале читать в ХТМЛ коде тип кодировки и делать выбор с применением доп. обработки
Если кому не лень, модифицируйте код в стиле обработки исключений, но без вывода сообщений

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)