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

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: 55
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: 55
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: 55
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ов, это не есть хорошо. И так порнушники и спаммеры больше всего наживаются на Интернет.
User avatar
Pink Panther
Уже с Приветом
Posts: 3811
Joined: 14 Oct 2001 09:01

Post by Pink Panther »

geek7 wrote:Мало ли чего не даст из html в xhtml не так уж и сложно преобразовать - тени позакрывал да внеочередные закрытия со спец символами поправил.. фан начнется когда пойдет JavaScript... вот тут, насколько я понимаю, перлу капут
или есть какой LWP::UserAgent:ECMAScripEngine ?
Да и что в джаве он есть силно сомневаюсь :?


мне тоже нужно конвертировать html -> xhtml. Нашел у Microsoft, но не пробовал:

Using the HTML to XHTML Conversion Tool

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