Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2012.04.22;
Скачать: [xml.tar.bz2];

Вниз

idHTTP1 и закачка стр. из ЯНДЕКС.ру   Найти похожие ветки 

 
Pcrepair ©   (2011-12-25 19:15) [0]

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


 
Dennis I. Komarov ©   (2011-12-25 19:41) [1]


> 1. если предварительно отослать запрос (через POST ввести
> словосочетание для поиска, ну скажем "купить телевизор")
> в строку ввода поиска на Яндексе, получится ли закачать
> первую страницу ответа Яндекса? Или всетаки нужно это делать
> через ТВебБраузер?

Разве не GET? И потом, какая разница что было до? TCP сессия заканчивается, после того как http-сервер отдал все по запросу. Никаких SID и авторизации, как я понимаю, тут нет...

> 2. что то страницы с отдельных сайтов закакчиваются с кракозябрами,
>  или вообще тексты с кириллицей не закачиваются, закачиваются
> только то что написано латиницей. С этим что то сделать
> можно? Если можно, то как?

Не верю... сервер отдает по запросу контент одинаковый для всех (ну почти), а вот что дальше с ним...


 
Dimka Maslov ©   (2011-12-25 20:19) [2]

Советую прочитать про такую вещь как протокол http и спецификация html. Там прекрасно всё расписано, какие заголовки и теги описывают кодировку страницы.


 
Pcrepair ©   (2011-12-25 20:32) [3]

GET - получить с сервера страницу
POST - отослать данные на сервер
вроде так?
еще разок, для тех кто в курсе этих всех дел
ввожу в ЕДИТ УРЛ = YA.RY
ввожу в ЕДИТ слово = "Купить телевизор" которое отправляется в строку поиска Яндекса
Нажимаю кнопку= сабмит (ту что на форме Яндекса)
Получу ли по idHTTP1.GET страницу с яндекса с результатами поиска?

ОТВЕТ: св-во HandleRedirects компонента idhttp в true - это чтобы не выскакивали 301 ошибки


 
Dimka Maslov ©   (2011-12-25 20:35) [4]


> Получу ли по idHTTP1.GET страницу с яндекса с результатами
> поиска?


Если запрос составлен правильно, то да.


 
Андреевич   (2011-12-25 20:40) [5]


> Получу ли по idHTTP1.GET страницу с яндекса с результатами
> поиска?

если яндекс сопротивляться не будет.


 
Pcrepair ©   (2011-12-25 20:50) [6]

а что, гуголь и яндекс как то могут сопротивлятся?
были случаи?


 
sniknik ©   (2011-12-25 21:02) [7]

> Нажимаю кнопку= сабмит (ту что на форме Яндекса)
слишком много лишних действий...
все одним запросом
http://yandex.ru/yandsearch?text=%EA%F3%EF%E8%F2%FC+%F2%E5%EB%E5%E2%E8%E7%EE%F0


 
Pcrepair ©   (2011-12-25 21:15) [8]

а как перекодировать кириллицу в это %EA%F3%EF%E8%F2%FC+%F2%E5%EB%E5%E2%E8%E7%EE%F0 ???
и вписать в idHTTP1.GET?
а для гугля как там?


 
Андреевич   (2011-12-25 21:17) [9]


> Pcrepair ©   (25.12.11 20:50) [6]
> а что, гуголь и яндекс как то могут сопротивлятся?
> были случаи?

да, были случаи когда сайт парсил поисковый запрос и яндекс отказывался его выполнять


 
Dimka Maslov ©   (2011-12-25 21:28) [10]


> а как перекодировать кириллицу


Это называется Url-кодирование (UrlEncode)


 
sniknik ©   (2011-12-25 22:35) [11]

> а для гугля как там?
да без разницы, правила формирования запросов/ответов т.е. протокол одинаков. а вот что за параметры/стиль он принял для передачи это прям в браузере посмотреть можно.

+
Dimka Maslov ©   (25.12.11 20:19) [2]
> Советую прочитать про такую вещь как протокол http и спецификация html. Там прекрасно всё расписано


 
Pcrepair ©   (2011-12-27 20:19) [12]

Решение задачи следующее:
Использование 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. для универсальности нужен дополнительный код: вначале читать в ХТМЛ коде тип кодировки и делать выбор с применением доп. обработки
Если кому не лень, модифицируйте код в стиле обработки исключений, но без вывода сообщений


 
megavoid ©   (2011-12-27 21:47) [13]

301 же! Попробуйте выставить у IdHTTP1.HandleRedirects := True



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2012.04.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.003 c
2-1325109344
TThread
2011-12-29 01:55
2012.04.22
TPotok_Com.Terminate


15-1324385736
Zheksonz
2011-12-20 16:55
2012.04.22
Синтаксис языка СИ


15-1324413003
Юрий
2011-12-21 00:30
2012.04.22
С днем рождения ! 21 декабря 2011 среда


3-1274429485
RWolf
2010-05-21 12:11
2012.04.22
План запроса vs. время выполнения


3-1274783943
Phoenix
2010-05-25 14:39
2012.04.22
Помогите составить запрос...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский