Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Паук(spider) для обработки ХТМЛ-страниц. TWebbrows, Паук(spider) для обработки ХТМЛ-страниц. 
:(
    Опции темы
Pcrepair
Дата 13.10.2011, 07:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 16.1.2011

Репутация: нет
Всего: нет



Добрый день
Что известно:
1. компонент TWebBrowser может загрузить, обработать код (JavaScript и прочее ФЛЭШ)  и отобразить страницу
2. для паука отображать страницу в общем ни к чему, кроме отдельных случаев (визуальный контроль оператором), картинки, флэш тоже не нужны, JavaScript обрабатывать нужно во многих случаях, еще нужно в автомате вставлять логины-пароли и отправлять их сервер(кнопочку нажимать). в общем все что нужно - оставить текст со ссылками (УРЛ) и сохранить табличную структуру страницы - чтоб не куча букв

Вопрос
Можно ли средствами INDY10 и RAD2010 сделать следующее (и будет ли это лучше - стабильнее, правильнее идеологически):
1. загрузить код ХТМЛ-страницы по заданному УРЛ
2. обработать JavaScrtipt и ввести результаты обработки в страницу
3. удалить все лишнее (флеш, картинки, фреймы, дивы), оставить только таблицы, текст, ссылки с привязкой к тексту (теги соответсвующие)
4. отобразить на РИЧЕДИТ? документ (для контроля результата)
5. вставлять логины-пароли и отправлять их на сервер
6. Куки тоже нужно обрабатывать (чтоб сессии с сервером сохранялись)

Если у кого есть примеры кода, дайте посмотреть. Заранее спасибо
--------------------
Сборник рабочего кода Процедур и Функций DelPhi     http://validcoderepo.narod.ru/
PM MAIL WWW   Вверх
Akella
Дата 13.10.2011, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Цитата(Pcrepair @  13.10.2011,  07:46 Найти цитируемый пост)
2. обработать JavaScrtipt и ввести результаты обработки в страницу

нет

Добавлено через 1 минуту и 19 секунд
Цитата(Pcrepair @  13.10.2011,  07:46 Найти цитируемый пост)
4. отобразить на РИЧЕДИТ? документ (для контроля результата)

 smile  если бы RichEdit мог отображать HTML, то зачем придумали WebBrowser, подумай об этом

Добавлено через 2 минуты и 2 секунды
Все остальное можно без установки доп. компонент.
PM MAIL   Вверх
Snowy
Дата 13.10.2011, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Теоретически можно всё. Но это куча работы.
Причём, если выделение данных из файла задача не шибко сложная, то выполнение JS - это проблема, ибо его нужно не просто выполнить, а выполнить в контексте страницы.
А, чтобы создать контекст страницы, нужно её построить.
А, поскольку это уже получается браузерный движок, то лучше и взять браузерный движок, т.к. самому его городить - работа неподъёмная. Куча народу вон не может заставить JS работать одинаково в разных браузерах. А одному с этим бороться вообще нереально.
Самый простой вариант - взять готовый браузерный движок и не мучаться.
Не нравится IE - возьми chromium. Но по нему меньше информации - подсказать некому будет.
Ну или, как вариант, взломать гугль и выкрасть их робота...
P.S. Очень сомневаюсь, что роботы вообще должны выполнять JS. Думаю, что они просто вытаскивают из него информацию также, как из html.
PM MAIL   Вверх
Pcrepair
Дата 13.10.2011, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 16.1.2011

Репутация: нет
Всего: нет



Цитата(Snowy @ 13.10.2011,  11:04)

P.S. Очень сомневаюсь, что роботы вообще должны выполнять JS. Думаю, что они просто вытаскивают из него информацию также, как из html.

Очень сомневаюсь, что роботы вообще должны выполнять JS. Думаю, что они просто вытаскивают из него информацию также, как из html.

вообще если посмотреть ЖАБА-код, который допустим выводит текст и ссылки, то там че те не найти этих ни текста ни ссылок, но если ЖАБА отключить то ничего не выводится. и таких сайтов полно.
--------------------
Сборник рабочего кода Процедур и Функций DelPhi     http://validcoderepo.narod.ru/
PM MAIL WWW   Вверх
Snowy
Дата 13.10.2011, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Я не убеждаю игнорировать JS.
Я говорю про то, что можно его разобрать также, как и html.
Если JS дёргает урл и вставляет результат в страницу, то робот может также дёрнуть этот урл и проанализировать результат.
Выполнять для этого скрипт нет необходимости - можно просто посмотреть, что он там тянет.
PM MAIL   Вверх
Pcrepair
Дата 13.10.2011, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 16.1.2011

Репутация: нет
Всего: нет



есть и такие скрипты, типа 
Код

<script type="text/javascript" src="http://vkontakte.ru/js/api/share.js?11" charset="windows-1251"></script>

но есть посложнее - вызов файла типа users.js, а там......
Код

nq.vh=mn.nn();mn.rn(nq.vh,nq.iq,{qn:function(kq){this.jq(kq);this.kq.onComplete=this.ot.ln(this);this.kq.ur=this.pt.ln(this);this.kq.sr=this.yq.ln(this);this.kq.timeout=(3698+1302);this.frequency=(this.kq.frequency||2);this.dt={} ;this.xt();} ,pt:function(yt,zt){if(this.kq.iu)this.kq.iu("offline, reconnecting");this._t();this.mu=setTimeout(this.xt.ln(this),(771+229));} ,yq:function(yt){if(this.kq.iu)this.kq.iu("timeout, reconnecting");this._t();this.mu=setTimeout(this.xt.ln(this),01750);} ,_t:function(){if(this.dt.kq)this.dt.kq.onComplete=undefined;clearTimeout(this.mu);} ,xt:function(){if(this.kq.wh)this.kq.pq=(this.kq.wh)();this.dt=new nq.aq(this.kq.url,this.kq);} ,ot:function(ou){try{var uu=nq.rq(ou);if(uu){(this.kq.hu||nq.hq)(uu);} else{if(this.kq.iu)this.kq.iu("reconnecting");} } catch(e){} this.mu=setTimeout(this.xt.ln(this),this.frequency*01750);} } );var xh={yh:function(link,title,zh,$h,width,height,_h){return'<a href="'+link+'"'+(_h!=null?' class="'+_h+'"':'')+' target="_blank" title="'+title+'" onclick="this.newWindow = window.open(\''+link+'\', \''+zh+'\', \'toolbar=0,scrollbars=0,location=0,status=1,menubar=0,width='+width+',height='+height+',resizable=1\');this.newWindow.focus();this.newWindow.opener=window;return false;">'+$h+'</a>';} ,mi:function(content){return'<table class="inner"><tr>'+content+'</tr></table>';} ,ni:function(qi,ri,id,si,ti,ui,ct,hi){var ii=2;var link=ri+"?thread="+id;var ji='<td>';if(ti||si){ji+=xh.yh((hi||!si)?link:link+"&viewonly=true",localized[ti?0:1],"ImCenter"+id,qi,01200,(444+36),null);} else{ji+='<a href="#">'+qi+'</a>';} ji+='</td>';if(ti){ji+='<td class="icon">';ji+=xh.yh(link,localized[0],"ImCenter"+id,'<img src="'+$u+'/images/tbliclspeak.gif" width="15" height="15" border="0" alt="'+localized[0]+'">',(599+41),0x1e0,null);ji+='</td>';ii++;} if(si){ji+='<td class="icon">';ji+=xh.yh(link+"&viewonly=tr

и это только кусочек
и что с этим делать?
--------------------
Сборник рабочего кода Процедур и Функций DelPhi     http://validcoderepo.narod.ru/
PM MAIL WWW   Вверх
Akella
Дата 13.10.2011, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Погугли на тему Delphi JS JavaScript. Хотя Snowy прав, нужно выполнять в контексте страницы. Идеальный вариант, это встроенный TWebbrowser.
PM MAIL   Вверх
Чучмек
Дата 15.10.2011, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 14
Всего: 41



Цитата(Akella @  13.10.2011,  14:27 Найти цитируемый пост)
, это встроенный TWebbrowser. 

Только нужно обломать ему руки и ноги.


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0556 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.