Специализированный спайдер/грабер

User avatar
Sergey_P
Уже с Приветом
Posts: 5280
Joined: 01 Nov 2000 10:01
Location: (RU->WA->NJ->?)

Специализированный спайдер/грабер

Post by Sergey_P »

в общем не знаю как эту фигню назвать, но подозреваю что устоявшийся термин должне быть.
Задача выдирать из нескольких заранее известных сайтов (но число и дизайн которых может время от времени менятся) определенную информацию, скажем прайслисты с целью последующей обработки.
Задача довольно типичная, наверняка кто-то пошел чуть дальше поиска в тексте ключевых слов/ узлов распарсенного html-дерева.

Интересует все - библиотеки, десктопные (win), серверные (Java, Perl, PHP) продукты. Опыт выполнения подобных проетов на заказ etc.
User avatar
geek7
Уже с Приветом
Posts: 20297
Joined: 01 Dec 2003 23:16
Location: Russia->USA

Post by geek7 »

нетуда
User avatar
Sergey_P
Уже с Приветом
Posts: 5280
Joined: 01 Nov 2000 10:01
Location: (RU->WA->NJ->?)

Post by Sergey_P »

Кстати наверно под это дело должны хорошо рихтоватся тулзы для тестирования.. вот только цены на них самолетоватые :?
Вроде смутно припоминаю когда года полтора зазад искал попаалось пара опэн сурс проектов.. может кто из них выжил :radio%:

PS забыл добавить к списку технологий .NET.
User avatar
geek7
Уже с Приветом
Posts: 20297
Joined: 01 Dec 2003 23:16
Location: Russia->USA

Post by geek7 »

Sergey_P wrote:Вроде смутно припоминаю когда года полтора зазад искал попаалось пара опэн сурс проектов.. может кто из них выжил :radio%:

http://www.opensourcetesting.org/
User avatar
Sergey_P
Уже с Приветом
Posts: 5280
Joined: 01 Nov 2000 10:01
Location: (RU->WA->NJ->?)

Post by Sergey_P »

geek7 wrote:http://www.opensourcetesting.org/

Не совсем то что имелось в виду, но любопытный сборник
User avatar
A. Fig Lee
Уже с Приветом
Posts: 12072
Joined: 17 Nov 2002 03:41
Location: английская колония

Re: Специализированный спайдер/грабер

Post by A. Fig Lee »

Sergey_P wrote:в общем не знаю как эту фигню назвать, но подозреваю что устоявшийся термин должне быть.
Задача выдирать из нескольких заранее известных сайтов (но число и дизайн которых может время от времени менятся) определенную информацию, скажем прайслисты с целью последующей обработки.
Задача довольно типичная, наверняка кто-то пошел чуть дальше поиска в тексте ключевых слов/ узлов распарсенного html-дерева.

Интересует все - библиотеки, десктопные (win), серверные (Java, Perl, PHP) продукты. Опыт выполнения подобных проетов на заказ etc.

Прошел ето дело неоднократно.
:oops: Конкретно сейчас есть сурс для Виндовс (разница - чисто сокет, там STL кругом).
ХТМЛ Парсер ну и там извлекает все линки и древья создает - если надо - свистите - не уверен правда, что он под боком. В худшем случае - в понедельник могу.
Верить нельзя никому - даже себе. Мне - можно!
User avatar
UFOpassenger
Уже с Приветом
Posts: 793
Joined: 02 Apr 2002 10:01

Re: Специализированный спайдер/грабер

Post by UFOpassenger »

Sergey_P wrote:в общем не знаю как эту фигню назвать, но подозреваю что устоявшийся термин должне быть.
Задача выдирать из нескольких заранее известных сайтов (но число и дизайн которых может время от времени менятся) определенную информацию, скажем прайслисты с целью последующей обработки.
Задача довольно типичная, наверняка кто-то пошел чуть дальше поиска в тексте ключевых слов/ узлов распарсенного хтмл-дерева.

Интересует все - библиотеки, десктопные (вин), серверные (Ява, Перл, ПХП) продукты. Опыт выполнения подобных проетов на заказ етц.


Паша Сенаторов вроде хотел такую штуку сделать, год-два назад. Далеко ли продвинулся - понятия не имею.
Volant
Уже с Приветом
Posts: 1346
Joined: 22 Sep 2001 09:01
Location: Dallas TX, USA

Re: Специализированный спайдер/грабер

Post by Volant »

Такой паучек пишется за час на .... VB6.0.
Ключевое слово - WebBrowser Control
User avatar
f_evgeny
Уже с Приветом
Posts: 10367
Joined: 12 Apr 2001 09:01
Location: Lithuania/UK

Re: Специализированный спайдер/грабер

Post by f_evgeny »

Volant wrote:Такой паучек пишется за час на .... VB6.0.
Ключевое слово - WebBrowser Control

Наш ответ:
/usr/bin/perl
Дальше, все будет только хуже. Оптимист.
User avatar
A. Fig Lee
Уже с Приветом
Posts: 12072
Joined: 17 Nov 2002 03:41
Location: английская колония

Re: Специализированный спайдер/грабер

Post by A. Fig Lee »

Volant wrote:Такой паучек пишется за час на .... VB6.0.
Ключевое слово - WebBrowser Control


мысль интересная.
а что ето за вебконтроль:
я так понимаю рефреши и редиректы он хендлит нормально. А вот яваскрипт меню - он маусмув появляющие - тоже?
Для частной задачи наверное хороший вариант, как генерал - нет полного контроля над сурсом и то, что будет подсунуто Нетскейпу можно пропустить.
Верить нельзя никому - даже себе. Мне - можно!
User avatar
SergeN
Уже с Приветом
Posts: 122
Joined: 20 Jan 2003 04:59
Location: Albany, NY

Post by SergeN »

Ну я пару лет назад эстрактор делал для всяких там желтых страниц на ВБ 6.0. Он был с нестраиваемые схемами, ну типа, если yahoo поменял дизайн, то сам заготовку для yahoo меняешь и дальше данные вынимаешь.
Правда этот проект за час не удалось сделать 8O
Короче за ящик пива сорсы могу поискать.
User avatar
Sergey_P
Уже с Приветом
Posts: 5280
Joined: 01 Nov 2000 10:01
Location: (RU->WA->NJ->?)

Re: Специализированный спайдер/грабер

Post by Sergey_P »

A. Fig Lee wrote:Прошел ето дело неоднократно.
:oops: Конкретно сейчас есть сурс для Виндовс (разница - чисто сокет, там STL кругом).
ХТМЛ Парсер ну и там извлекает все линки и древья создает - если надо - свистите - не уверен правда, что он под боком. В худшем случае - в понедельник могу.

Я в С с крестами не силен.. так сказать "читаю со словарем" :mrgreen: т.е. чисто в образоваельных целях вроде чтения книжек с примерами на с++.
Так что пригодится только прикидка - сколько такой проект займет (T & $)
User avatar
Sergey_P
Уже с Приветом
Posts: 5280
Joined: 01 Nov 2000 10:01
Location: (RU->WA->NJ->?)

Re: Специализированный спайдер/грабер

Post by Sergey_P »

UFOpassenger wrote:Паша Сенаторов вроде хотел такую штуку сделать, год-два назад. Далеко ли продвинулся - понятия не имею.

Как бы мне до этого Паши дозвонится там или еще как законтачить?
User avatar
Sergey_P
Уже с Приветом
Posts: 5280
Joined: 01 Nov 2000 10:01
Location: (RU->WA->NJ->?)

Re: Специализированный спайдер/грабер

Post by Sergey_P »

Volant wrote:Такой паучек пишется за час на .... VB6.0.
Ключевое слово - WebBrowser Control

И что за час так чтоб не нужно было переписавать каждый раз как после login& password решат не сразу прайс лист показать, а еще поинтересоватся "нужен последний или за определенный месяц текущего/прошлого года?"
User avatar
Sergey_P
Уже с Приветом
Posts: 5280
Joined: 01 Nov 2000 10:01
Location: (RU->WA->NJ->?)

Re: Специализированный спайдер/грабер

Post by Sergey_P »

A. Fig Lee wrote:
Volant wrote:Такой паучек пишется за час на .... VB6.0.
Ключевое слово - WebBrowser Control

мысль интересная.
а что ето за вебконтроль:
я так понимаю рефреши и редиректы он хендлит нормально. А вот яваскрипт меню - он маусмув появляющие - тоже?

Я так понимаю это IE собственной персоной - берешь VB на перевес, ваяешь GUI и "ВасяПупкинНафигажтор" готов :mrgreen:
Беглое гугление показало, что у ребят не имеющих проблем с чтением документации проблемы довольно экзотические вроде загрузки JVM.. впрочем наверно можно попотеть пока нацдешь как ему конфигурацию проксей установить, итд.
User avatar
Sergey_P
Уже с Приветом
Posts: 5280
Joined: 01 Nov 2000 10:01
Location: (RU->WA->NJ->?)

Post by Sergey_P »

SergeN wrote:Ну я пару лет назад эстрактор делал для всяких там желтых страниц на ВБ 6.0. Он был с нестраиваемые схемами, ну типа, если yahoo поменял дизайн, то сам заготовку для yahoo меняешь и дальше данные вынимаешь.
Правда этот проект за час не удалось сделать 8O
Короче за ящик пива сорсы могу поискать.


А за сколько получилось?
Насколько сложно сменить заготовку? (Как по времени так и по скилам - VB, regular expressions, script, HTML..?)
User avatar
None of the above
Новичок
Posts: 38
Joined: 07 Aug 2002 05:55
Location: Vancouver, Canada

Re: Специализированный спайдер/грабер

Post by None of the above »

A. Fig Lee wrote:
Volant wrote:Такой паучек пишется за час на .... VB6.0.
Ключевое слово - WebBrowser Control


мысль интересная.
а что ето за вебконтроль:
я так понимаю рефреши и редиректы он хендлит нормально. А вот яваскрипт меню - он маусмув появляющие - тоже?
Для частной задачи наверное хороший вариант, как генерал - нет полного контроля над сурсом и то, что будет подсунуто Нетскейпу можно пропустить.


Если знаком с VB и WebBrowser Control, то пишется быстро. Не за час, конечно... за день, пожалуй. Я участвовал в написании подобного для www.newman.ru ешё в 99-м (был проект по каталогизации freeware & shareware software)... в 2002-м у меня был годовой контракт с www.careerexchange.com (искал для них некую специфицную для бизнеса информацию)... сейчас пишу подобное уже для себя (свой проект).

Обработка html, обход веб-сайта - это все просто. Взять WebBrowser Control и посмотреть что и как он делает. Но вот с распознаванием необходимой информации сложнее. Когда сайт (скажет какой-то каталог) большой, структура его "листьев" с интересующей информацией известна, то здорово. Находи в html группы необходимых тегов и выдирай информацию. А вот когда нужно обработать произвольную страничку "Contact Us" с корректным распознаванием адреса, телефонов, контактных лиц... Я писал сугубо эмпирический алгоритм, не замахиваясь на слишком большую универсальность.

Смотри что тебе надо. Сколько времени ты готов положить на разработку алгоритма распознавания и какой процент ошибок допустим.

И еще. WebBrowser Control достаточно тормозная штука, сайты тоже тормозят. Например, просканировать весь monster.com - это 1-2 дня. Если объемы велики, то ну;но запускать 10+ потоков одновременно... если сканишь сайт, на котором robots.txt запрещает это делать, то будь готов, что IP машины с которой шло сканирование скоро окажется забаненым... еще бываю сайты на которых специално предусмотрены меры против таких "умников", сканирующих информацию... в общем если в это ввязаться, то это на года...

Удачи :)
User avatar
None of the above
Новичок
Posts: 38
Joined: 07 Aug 2002 05:55
Location: Vancouver, Canada

Re: Специализированный спайдер/грабер

Post by None of the above »

Sergey_P wrote:
UFOpassenger wrote:Паша Сенаторов вроде хотел такую штуку сделать, год-два назад. Далеко ли продвинулся - понятия не имею.

Как бы мне до этого Паши дозвонится там или еще как законтачить?


Паша Сенаторов - бывший модератор фидошной эхи MO.JOB.TALK.

Попробуй поспрашивать в ньюсах - fido7.mo.job.talk и fido7.russian.z1. У Тутубалина спроси, он может знать. А может и нет :).
testuser
Уже с Приветом
Posts: 1071
Joined: 18 Nov 2003 22:53
Location: MA

Re: Специализированный спайдер/грабер

Post by testuser »

None of the above wrote:И еще. WebBrowser Control достаточно тормозная штука, сайты тоже тормозят. Например, просканировать весь monster.com - это 1-2 дня. Если объемы велики, то ну;но запускать 10+ потоков одновременно... если сканишь сайт, на котором robots.txt запрещает это делать, то будь готов, что IP машины с которой шло сканирование скоро окажется забаненым... еще бываю сайты на которых специално предусмотрены меры против таких "умников", сканирующих информацию... в общем если в это ввязаться, то это на года...

Удачи :)


Я вот хотел такую вещь сделать - я сейчас ищу работу, периодически (чем чаще, тем лучше) приходтся заходить на сайты и обновлять свое резюме. Просто добавляю точку или убираю. Вот думал, как это дело автоматизировать, может уже есть что-то для этого заточенное? Ну и выдирать работы было бы неплохо, но это не главное, главное - обновлять.
User avatar
None of the above
Новичок
Posts: 38
Joined: 07 Aug 2002 05:55
Location: Vancouver, Canada

Re: Специализированный спайдер/грабер

Post by None of the above »

testuser wrote:Я вот хотел такую вещь сделать - я сейчас ищу работу, периодически (чем чаще, тем лучше) приходтся заходить на сайты и обновлять свое резюме. Просто добавляю точку или убираю. Вот думал, как это дело автоматизировать, может уже есть что-то для этого заточенное? Ну и выдирать работы было бы неплохо, но это не главное, главное - обновлять.


Есть сервисы по размещению резюме на "большом" количестве сайтов типа монстра. В составе пакета услуг этих сервисов было и то, о чем ты спрашиваешь. Где конкретно - не помню, но было точно... их десятки - этих сервисов... ищи...
User avatar
Sergey_P
Уже с Приветом
Posts: 5280
Joined: 01 Nov 2000 10:01
Location: (RU->WA->NJ->?)

Re: Специализированный спайдер/грабер

Post by Sergey_P »

testuser wrote:Я вот хотел такую вещь сделать - я сейчас ищу работу, периодически (чем чаще, тем лучше) приходтся заходить на сайты и обновлять свое резюме. Просто добавляю точку или убираю. Вот думал, как это дело автоматизировать, может уже есть что-то для этого заточенное? Ну и выдирать работы было бы неплохо, но это не главное, главное - обновлять.

Для сугубо личной персональной нужды можно скачать скажем демоверсию тестера веб-приложений.. Проходиш раз вручную, все шаги записываются, составляешь формулу, файл (или табличку) с изменяемыми параметрами и сценарий теста (типа раз в 30 мин отрабатывать №1 раз в 50 мин №2)
потом кроме регулярно обновляемого резюме будет еще диаграмма отклика монстра :)
Frank
Уже с Приветом
Posts: 2019
Joined: 22 Jul 2000 09:01

Post by Frank »

Соединиться с сайтом, ввести пароль и содрать информацию можно примерно так: Используется авторизация по cookie.

Останется распарсить, но тут уже стандарта, естественно, нет. При изменении структуры сайты парсер придётся переделать. Удобно было бы скачать сразу в XML, но кто же даст!

Code: Select all

#!/usr/bin/perl

  use HTTP::Request::Common qw(POST);
  use LWP::UserAgent;
  use HTTP::Cookies;

  $ua = LWP::UserAgent->new;
  $ua->agent('Mozilla/5.0');
  $ua->cookie_jar(HTTP::Cookies->new(file => "cookies.txt", autosave => 1,  ignore_discard => 1));

  # and then send requests just as you used to do
  $res = $ua->request(HTTP::Request->new(GET => "http://www.some.com/"));

  my($req) = POST 'http://www.some.com/js/LoginHandler',
                [dateID => 'user', password => 'secret'];
  $content = $ua->request($req)->as_string;
  print $content, "\n";

  # and then send requests just as you used to do
  $res1 = $ua->request(HTTP::Request->new(GET => "http://www.some.com/main.jsp"));
  print $res1->as_string, "\n";

  # another request
  $res1 = $ua->request(HTTP::Request->new(GET => "http://www.some.com/js/Info"));

 print $res1->as_string, "\n";
User avatar
geek7
Уже с Приветом
Posts: 20297
Joined: 01 Dec 2003 23:16
Location: Russia->USA

Post by geek7 »

Frank wrote:Соединиться с сайтом, ввести пароль и содрать информацию можно примерно так: Используется авторизация по cookie.

Останется распарсить, но тут уже стандарта, естественно, нет. При изменении структуры сайты парсер придётся переделать. Удобно было бы скачать сразу в XML, но кто же даст!

Мало ли чего не даст из html в xhtml не так уж и сложно преобразовать - тени позакрывал да внеочередные закрытия со спец символами поправил.. фан начнется когда пойдет JavaScript... вот тут, насколько я понимаю, перлу капут
или есть какой LWP::UserAgent:ECMAScripEngine ?
Да и что в джаве он есть силно сомневаюсь :?
User avatar
Sergey_P
Уже с Приветом
Posts: 5280
Joined: 01 Nov 2000 10:01
Location: (RU->WA->NJ->?)

Re: Специализированный спайдер/грабер

Post by Sergey_P »

None of the above wrote:И еще. WebBrowser Control достаточно тормозная штука, сайты тоже тормозят. Например, просканировать весь monster.com - это 1-2 дня. Если объемы велики, то ну;но запускать 10+ потоков одновременно... если сканишь сайт, на котором robots.txt запрещает это делать, то будь готов, что IP машины с которой шло сканирование скоро окажется забаненым... еще бываю сайты на которых специално предусмотрены меры против таких "умников", сканирующих информацию... в общем если в это ввязаться, то это на года...

С парсингом особых проблем быть недолжно (кроме переделывания с каждым новым диайном), а вот соревнование брони и снарядов вполне вероятно
С одной стороны есть мнение что информацией делится незахотят (но и по закону запретить не могут) с другой сайт(ы) не интранетовские и посещаемые
посему существенную часть аудитории пугать необходимым AсtivX или аплетом небудут, а вот JavaScript (v. IE 4&up, NN 4) могут забацать..
С одной столроны есть естественное желание Java-нуть, с другой если генерить будут JavaScript-ом динамически (врядли, но возможно) то альтернативы WebBrowser Control невидно :cry:
Frank
Уже с Приветом
Posts: 2019
Joined: 22 Jul 2000 09:01

Post by Frank »

Какой-такой капут с JavaScript. Придётся просто вырезать строки из document.write и собирать их самому, ну ещё подменять может функции JavaScript.

Да, бывают статьи про то, как всё закодировать, чтобы не всё так легко было. Но кому шибко надо, тот всегда проведёт reverse engineering.

Но этим они уже предупреждают: низзя!
Сам обычно кодирую свой e-mail на страничках с помощью JavaScript. Так что, если вы делаете граббер e-mailов, это не есть хорошо. И так порнушники и спаммеры больше всего наживаются на Интернет.

Return to “Вопросы и новости IT”