Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2010, 15:56   #1
Blourid
Форумчанин
 
Аватар для Blourid
 
Регистрация: 09.03.2010
Сообщений: 138
Восклицание Парсинг голой HTML страницы

Привет всем
До этого пробовал загружать странички методом GET и пропарсив теги получал содержимое страниц для данной сессии. Но как выяснилось некоторые сайты обычно после успешной сессии и записи кук автоматически перенаправляют (redirect) пользователя тем самым изменяется некоторые строчки кода в самой страничке что тоже реально.
Как вы думаете стоит ли для таких случаев заранее сохранять голый HTML сайт физически у себя и после этого уже парсить его как локальный файл, думаю такой подход может оказаться весьма стабильнее имея у себя конкретный файл данных.
Вчера
Blourid вне форума Ответить с цитированием
Старый 15.03.2010, 18:25   #2
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

После вызова GET с полученным текстом уже ничего не поможет произойти, потому что
1) Если там были редиректы, то они уже сделались (если конечно HandleRedirects не стоит false)
2) яваскрипты не выполняются
TwiX вне форума Ответить с цитированием
Старый 15.03.2010, 18:30   #3
Blourid
Форумчанин
 
Аватар для Blourid
 
Регистрация: 09.03.2010
Сообщений: 138
По умолчанию

Цитата:
Сообщение от TwiX Посмотреть сообщение
2) яваскрипты не выполняются
Как это не выполняются можно по подробнее? Т.е если измениться значение в SELECT которые реализован на джаваскрипт то его методы не будут обрабатываться? я что то не понял
думаю а может сохранить страничку на выходе как txt и потом парсить его?
Redirect поставил в true и заполнил все POST данные в свойствах HTTP компоненты, прописал до User Agenta и подключил Cookie manager.
Пример у меня такой

Код:
procedure TForm5.btn1Click(Sender: TObject);
 var
  loadstream:TMemoryStream;
begin

 loadstream:=TMemoryStream.Create;
 HTTP1.Get('http://www.programmersforum.ru', loadstream);
 loadstream.SaveToFile('C:\Test.txt');
 loadstream.Free;

end;
p/s у меня идея, хочу реализовать для себя парсер форума чтобы в один клик узнать о новых сообщениях в разделах которых я выберу, но это потом когда разберусь с этим
Вчера

Последний раз редактировалось Blourid; 15.03.2010 в 18:48.
Blourid вне форума Ответить с цитированием
Старый 15.03.2010, 18:56   #4
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Для начала, что такое HTTP1?
Это TIdHTTP? Я говорил про него. Если да, то заводим пременную s типа стринг и s:=HTTP1.Get(...) будет достаточно.
TwiX вне форума Ответить с цитированием
Старый 15.03.2010, 19:10   #5
Blourid
Форумчанин
 
Аватар для Blourid
 
Регистрация: 09.03.2010
Сообщений: 138
По умолчанию

Да конечно это idHTTP просто я использую CnPack и меняю название компонентов.
Загружать в память это не то что я хочу, дело в том что, на сайте используется джаваскрипт и ajax, которые берут данные из базы, например если выбрать какое то значение потом нажать на Submit - Отправить и после этого 10-15 секунд в поиске базы данных моего запроса на следующей страницы выводится ответ. Но как вы уже знаете сам сайт не перенаправляется на другую страничку а обновляется содержимое формы джаваскрипта который выводит тот результат. Я выделил тот участок на форме и посмотрел его исходный код, увидел что этот код генерирует после ответа из базы , т.е до запроса этого кода на страничке не было.
А я как обычно при подключении посылаю POST запрос для двух значений, и сайт как бы приняв мой запрос ждет еще нажатия кнопки чтобы завершить ее, потом уже после того если я даже нажму на эту кнопку то придется подождать еще 10-15 сек. чтобы получить ответ. Задача в том как мне получить ответ после всех этих манипуляций ввода значений? Как узнать загружена ли последняя ответная страничка из которой я смогу пропарсить для себя нужные мне данные...
Вчера
Blourid вне форума Ответить с цитированием
Старый 15.03.2010, 19:37   #6
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Idhttp не выполняет ничего по типу ajax и javascript. Это делается ручками. Просто отправляем пост-запрос и ждём ответа. Потом просто анализируем его.
TwiX вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
парсинг Html eldar Общие вопросы Delphi 4 23.04.2009 20:42
Парсинг страницы Terikon Общие вопросы Delphi 3 04.04.2009 00:32
парсинг страницы seoanalyzer Общие вопросы Delphi 3 13.02.2009 12:50
Парсинг HTML страницы OkeaH Работа с сетью в Delphi 1 19.01.2009 09:17
HTML Парсинг BaikalLord Помощь студентам 5 15.12.2008 08:20