Комментарии 28
Я всегда думал, что лоадер — это загрузчик, а то, что вы описали — граббер. о_О
на хабре если не ошибаюсь проскакивал библиотека, которую автор рекомендовал для граббинга лоадинга :)
но названия не помню
но названия не помню
Граббер (по-вашему лоадер) — это лишь извлечение информации с сайта. И на сколько я понял, с этим у вас ни каких проблем нет. Вопросы у вас возникают с классификацией, упорядочиванием и хранением отпарсенной информации и тут единой методики не существует — все зависит от конкретной задачи.
Ваш алгоритм, на мой взгяд, не плох, за исключением того, что у него иерархаичная классификация. То есть, если марка «ФОРТ», а не «Ford», то система сразу отбросит эту запись для обработки модератором. А могла бы искать дальше, найти «Focus» и поскольку у других марок такой модели нет, сделать вывод, что это все-таки «Ford». Тоже самое касается и модификаци. Я думаю, что найдя классификацию «1.6 Ti-VCT» тоже вполне можно сделать вывод и том что имеется в виду. Но для этого в классификационной базе должно быть двустороннее сопоставление. Если эту систему грамотно выстроить, то модератор будет круглосуточно пить чай, обрабатывая только совершенные ляпы типа «ВАЗ Focus 600» =)
Ваш алгоритм, на мой взгяд, не плох, за исключением того, что у него иерархаичная классификация. То есть, если марка «ФОРТ», а не «Ford», то система сразу отбросит эту запись для обработки модератором. А могла бы искать дальше, найти «Focus» и поскольку у других марок такой модели нет, сделать вывод, что это все-таки «Ford». Тоже самое касается и модификаци. Я думаю, что найдя классификацию «1.6 Ti-VCT» тоже вполне можно сделать вывод и том что имеется в виду. Но для этого в классификационной базе должно быть двустороннее сопоставление. Если эту систему грамотно выстроить, то модератор будет круглосуточно пить чай, обрабатывая только совершенные ляпы типа «ВАЗ Focus 600» =)
Спасибо. Конечно, нужно вставить эту проверку. Смотреть, если нет марки, на паренты подходящих моделей, и если найдено только одно значение, подставлять его автоматически. Другое дело, что есть системы похуже марок-моделей. Например, база населенных пунктов. В Финляндии около 20.000, при этом есть две деревни «Хельсинки», а «Лахти» вообще штук 8. Иногда кроме как по тексту объявления и не поймешь, какое же Лахти имеется ввиду на источнике.
плюс можно добавить авто-проверку транслитерированных значений
чтобы автоматом сопоставлялось ВАЗ-VAZ, ЛАДА-LADA и пр.
в некоторых случаях позволяет несколько сэкономить человеко-время.
чтобы автоматом сопоставлялось ВАЗ-VAZ, ЛАДА-LADA и пр.
в некоторых случаях позволяет несколько сэкономить человеко-время.
Интересно почитать как это делается у других=)
А у нас есть специальные таблицы синонимов, причём (как писали выше) достаточно совпасть только модели, чтобы определить и производителя. Такой подход, конечно, полностью проблему не устраняет, но очень сильно снижает нагрузку на людей. Ну а что не распозналось, то да — отсматривается и, при необходимости, в базу добавляются новые синонимы.
А у нас есть специальные таблицы синонимов, причём (как писали выше) достаточно совпасть только модели, чтобы определить и производителя. Такой подход, конечно, полностью проблему не устраняет, но очень сильно снижает нагрузку на людей. Ну а что не распозналось, то да — отсматривается и, при необходимости, в базу добавляются новые синонимы.
Есть два вопроса:
1. Насколько сложно пользоваться гуглом для поиска синонимов (допустим, "wikipedia" обычно даёт первую ссылку на вики-страницу подходящего понятия)?
2. Насколько легально использовать заграбленную информацию для коммерческих целей ()?
Есть также соображение:
Эти подходы очень напоминают алгоритмы поисковиков. Для последнего подхода, парентов, очень просится map-reduce. Думается, что грамотный лоадер — маленький гугл.
1. Насколько сложно пользоваться гуглом для поиска синонимов (допустим, "wikipedia" обычно даёт первую ссылку на вики-страницу подходящего понятия)?
2. Насколько легально использовать заграбленную информацию для коммерческих целей ()?
Есть также соображение:
Эти подходы очень напоминают алгоритмы поисковиков. Для последнего подхода, парентов, очень просится map-reduce. Думается, что грамотный лоадер — маленький гугл.
Лучше бы написал про защиту от грабберов
А такие бывают? Мне кажется в лучшем случае система максимального усложнения им жизни =)
Защиту от грабберов написать не очень сложно. Первое, что приходит на ум — перед выводом менять случайным образом названия стилей css в коде (соответственно, cssник менять тоже). Только кеширование отключить. Менять местами блоки в контенте. Важно помнить, что сколько человекочасов потратишь на защиту, за столько она и ломается.
Ну так это и не защита, а именно усложнение жизни грабберу =) Защита — это когда время взлома намного привышает время потраченное на защиту. А тут ничего подобного не замечается.
Кстати тут подумал, что изменять имена классов — это защита пепец грабберу. Особенно в web2.0, где одни дивы на странице. Придется cssник парсить и в нем понимать, какой класс — название параметра, какой — заголовок. А еще мы вообще к каждому элементу на странице прибавим случайный класс, а в css-нике все перемешаем.
У меня в Питере был приятель, который занимался шифрованием программ. Вот только те методы не очень подходят к web, поскольку можно зашифровать так, что и поисковики ничего не разберут.
У меня в Питере был приятель, который занимался шифрованием программ. Вот только те методы не очень подходят к web, поскольку можно зашифровать так, что и поисковики ничего не разберут.
Я наверно слабо представляю как работает парсинг. Во всяком случае, всегда считал что парсинг идет по ДОМ-дереву, а не по css =) Оказывается, все намного сложнее =)
По dom-дереву то само собой. Но возьмите обычный сайт. У него есть меню, что-то сверху, сбоку, и все это в дивах или таблицах. Посередине контент тоже в дивах и таблицах. Вы ж не будете выбирать типа пятый тег и в нем третий тег в качестве, скажем, цены предложения. Иначе на сайт добавят баннер, и ваш парсер тут же накроется. А вот редизайн делают редко, и названия классов обычно не меняются.
Да, действительно… Это меня не радует, потому что мне в скором времени возможно придется писать подобный парсер. Собственно, именно поэтому я начинаю потихоньку интересоваться этим вопросом. Ты парсишь с помощью какой-то библиотеки или используешь самописный конечный автомат?
И еще есть вопрос по поводу правомерности публикации информации, полученной путем подобного сбора. Знакомые недавно открыли агенство недвижимости и по причине малой раскрученности не имеют своего каталога. Вот и возникла идея собирать инфу с больших городских порталов объявлений и публиковать под девизом «у нас нет своего каталога, наш каталог — весь рынок недвижимости» =) Насколько правомерна такая идея?
И еще есть вопрос по поводу правомерности публикации информации, полученной путем подобного сбора. Знакомые недавно открыли агенство недвижимости и по причине малой раскрученности не имеют своего каталога. Вот и возникла идея собирать инфу с больших городских порталов объявлений и публиковать под девизом «у нас нет своего каталога, наш каталог — весь рынок недвижимости» =) Насколько правомерна такая идея?
Пишу без библиотек на перле или пхп, стараюсь делать короткие независимые парсеры, больше сплитами чем реплейсами, потому как в случае ошибок на страницах источника последние часто привышают memory_limit, и из-за этого парсер останавливается и не грузит следующие «нормальные» страницы.
Правомерность — скользкий вопрос. Мы обычно спрашиваем разрешение на трансляцию. Скажем, если у нас портал по недвижимости, мы списываемся с агентствами, и они обычно рады, что их предложения будут у нас, поскольку все заявки по объектам все равно переадресовываются им обратно.
Правомерность — скользкий вопрос. Мы обычно спрашиваем разрешение на трансляцию. Скажем, если у нас портал по недвижимости, мы списываемся с агентствами, и они обычно рады, что их предложения будут у нас, поскольку все заявки по объектам все равно переадресовываются им обратно.
Главное особо не увлекаться этими защитами, а то получится как с картинками. Знаете, на них раньше то на правую кнопку мыши alert выводили, чтобы не скопировали, то разбивали на много мелких картинок, то во флеш засовывали. А в итоге все равно, если очень хочется — жмакнул принтскрин и вырезал в photoshop. То же и с текстами. Будете наворачивать защиты, а придет школьник Вася и руками скопипастит все по 3 цента за страницу.
Просто нигде не встречал описания этих программ.
Откройте для себя удивительный мир синтаксического анализа
Откройте для себя удивительный мир синтаксического анализа
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Теория лоадеров