Как стать автором
Обновить

Комментарии 28

Я всегда думал, что лоадер — это загрузчик, а то, что вы описали — граббер. о_О
Это для него граббер -)) А для сайтов это — лоадер -))
crawler :)
угу, или граббер или парсер, смотря кому-как нравится. :) О лоадерах тоже первый раз слышу, это типа красивое слово, чтобы не было стыдно, что чужой контент воруется… :)
Ах, да, забыл — информация должна быть свободно… воруемой :)
на хабре если не ошибаюсь проскакивал библиотека, которую автор рекомендовал для граббинга лоадинга :)
но названия не помню
Граббер (по-вашему лоадер) — это лишь извлечение информации с сайта. И на сколько я понял, с этим у вас ни каких проблем нет. Вопросы у вас возникают с классификацией, упорядочиванием и хранением отпарсенной информации и тут единой методики не существует — все зависит от конкретной задачи.

Ваш алгоритм, на мой взгяд, не плох, за исключением того, что у него иерархаичная классификация. То есть, если марка «ФОРТ», а не «Ford», то система сразу отбросит эту запись для обработки модератором. А могла бы искать дальше, найти «Focus» и поскольку у других марок такой модели нет, сделать вывод, что это все-таки «Ford». Тоже самое касается и модификаци. Я думаю, что найдя классификацию «1.6 Ti-VCT» тоже вполне можно сделать вывод и том что имеется в виду. Но для этого в классификационной базе должно быть двустороннее сопоставление. Если эту систему грамотно выстроить, то модератор будет круглосуточно пить чай, обрабатывая только совершенные ляпы типа «ВАЗ Focus 600» =)
Спасибо. Конечно, нужно вставить эту проверку. Смотреть, если нет марки, на паренты подходящих моделей, и если найдено только одно значение, подставлять его автоматически. Другое дело, что есть системы похуже марок-моделей. Например, база населенных пунктов. В Финляндии около 20.000, при этом есть две деревни «Хельсинки», а «Лахти» вообще штук 8. Иногда кроме как по тексту объявления и не поймешь, какое же Лахти имеется ввиду на источнике.
И каким именно критерием в тексте выступает четкая локализация конкретного «Лахти»? Я имею в виду, когда человек смотрит за счет какой информации он делает вывод?
Делает вывод за счет своей эрудиции. Обычно если это не основное Лахти, в текстах написано типа «Лахти 10 км от Уусикаупунки». А модератор выводит все Лахти на карту и выбирает нужное.
Нда. Тут модеру ни чем не поможешь =)
НЛО прилетело и опубликовало эту надпись здесь
плюс можно добавить авто-проверку транслитерированных значений
чтобы автоматом сопоставлялось ВАЗ-VAZ, ЛАДА-LADA и пр.
в некоторых случаях позволяет несколько сэкономить человеко-время.
Интересно почитать как это делается у других=)
А у нас есть специальные таблицы синонимов, причём (как писали выше) достаточно совпасть только модели, чтобы определить и производителя. Такой подход, конечно, полностью проблему не устраняет, но очень сильно снижает нагрузку на людей. Ну а что не распозналось, то да — отсматривается и, при необходимости, в базу добавляются новые синонимы.
НЛО прилетело и опубликовало эту надпись здесь
Есть два вопроса:
1. Насколько сложно пользоваться гуглом для поиска синонимов (допустим, "wikipedia" обычно даёт первую ссылку на вики-страницу подходящего понятия)?

2. Насколько легально использовать заграбленную информацию для коммерческих целей ()?

Есть также соображение:
Эти подходы очень напоминают алгоритмы поисковиков. Для последнего подхода, парентов, очень просится map-reduce. Думается, что грамотный лоадер — маленький гугл.
Лучше бы написал про защиту от грабберов
А такие бывают? Мне кажется в лучшем случае система максимального усложнения им жизни =)
Защиту от грабберов написать не очень сложно. Первое, что приходит на ум — перед выводом менять случайным образом названия стилей css в коде (соответственно, cssник менять тоже). Только кеширование отключить. Менять местами блоки в контенте. Важно помнить, что сколько человекочасов потратишь на защиту, за столько она и ломается.
Ну так это и не защита, а именно усложнение жизни грабберу =) Защита — это когда время взлома намного привышает время потраченное на защиту. А тут ничего подобного не замечается.
Кстати тут подумал, что изменять имена классов — это защита пепец грабберу. Особенно в web2.0, где одни дивы на странице. Придется cssник парсить и в нем понимать, какой класс — название параметра, какой — заголовок. А еще мы вообще к каждому элементу на странице прибавим случайный класс, а в css-нике все перемешаем.

У меня в Питере был приятель, который занимался шифрованием программ. Вот только те методы не очень подходят к web, поскольку можно зашифровать так, что и поисковики ничего не разберут.
Я наверно слабо представляю как работает парсинг. Во всяком случае, всегда считал что парсинг идет по ДОМ-дереву, а не по css =) Оказывается, все намного сложнее =)
По dom-дереву то само собой. Но возьмите обычный сайт. У него есть меню, что-то сверху, сбоку, и все это в дивах или таблицах. Посередине контент тоже в дивах и таблицах. Вы ж не будете выбирать типа пятый тег и в нем третий тег в качестве, скажем, цены предложения. Иначе на сайт добавят баннер, и ваш парсер тут же накроется. А вот редизайн делают редко, и названия классов обычно не меняются.
Да, действительно… Это меня не радует, потому что мне в скором времени возможно придется писать подобный парсер. Собственно, именно поэтому я начинаю потихоньку интересоваться этим вопросом. Ты парсишь с помощью какой-то библиотеки или используешь самописный конечный автомат?

И еще есть вопрос по поводу правомерности публикации информации, полученной путем подобного сбора. Знакомые недавно открыли агенство недвижимости и по причине малой раскрученности не имеют своего каталога. Вот и возникла идея собирать инфу с больших городских порталов объявлений и публиковать под девизом «у нас нет своего каталога, наш каталог — весь рынок недвижимости» =) Насколько правомерна такая идея?
Пишу без библиотек на перле или пхп, стараюсь делать короткие независимые парсеры, больше сплитами чем реплейсами, потому как в случае ошибок на страницах источника последние часто привышают memory_limit, и из-за этого парсер останавливается и не грузит следующие «нормальные» страницы.

Правомерность — скользкий вопрос. Мы обычно спрашиваем разрешение на трансляцию. Скажем, если у нас портал по недвижимости, мы списываемся с агентствами, и они обычно рады, что их предложения будут у нас, поскольку все заявки по объектам все равно переадресовываются им обратно.
Главное особо не увлекаться этими защитами, а то получится как с картинками. Знаете, на них раньше то на правую кнопку мыши alert выводили, чтобы не скопировали, то разбивали на много мелких картинок, то во флеш засовывали. А в итоге все равно, если очень хочется — жмакнул принтскрин и вырезал в photoshop. То же и с текстами. Будете наворачивать защиты, а придет школьник Вася и руками скопипастит все по 3 цента за страницу.
Просто нигде не встречал описания этих программ.

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

Публикации

Истории