Эта статья поднимает множество проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалить эти сообщения-шаблоны ) ( Узнайте, как и когда удалить этот шаблон сообщения )
|
Автор (ы) оригинала | Александр Сибиряков, Хавьер Касас |
---|---|
Разработчики) | Scrapinghub Ltd., сообщество GitHub |
Первый выпуск | 1 ноября 2014 г . |
Стабильный выпуск | v0.8.1 / 5 апреля 2019 г . [1] |
Написано в | Python |
Операционная система | OS X , Linux |
Тип | сканирование сети |
Лицензия | Лицензия BSD с тремя пунктами |
Веб-сайт | github |
Frontera - это платформа веб-сканирования с открытым исходным кодом , реализующая компонент границы обхода и предоставляющая примитивы масштабируемости для приложений веб-сканеров.
Обзор [ править ]
Содержание и структура Всемирной паутины быстро меняются. Frontera спроектирована так, чтобы иметь возможность быстро адаптироваться к этим изменениям. Большинство крупномасштабных поисковых роботов работают в пакетном режиме с последовательными фазами внедрения, выборки, анализа, дедупликации и планирования. Это приводит к задержке обновления сканирования при изменении Интернета. Дизайн в основном мотивирован относительно низкой производительностью произвольного доступа жестких дисков по сравнению с последовательным доступом. Вместо этого Frontera полагается на современные системы хранения ключевых значений , используя эффективные структуры данных и мощное оборудование для одновременного сканирования, анализа и планирования индексации новых ссылок. Это проект с открытым исходным кодом, разработанный для различных сценариев использования, с высокой гибкостью и настраиваемостью.
Единственная цель Frontera - крупномасштабное сканирование веб-сайтов. Его гибкость позволяет выполнять обходы умеренного размера на одной машине с несколькими ядрами, используя режимы запуска одного процесса и распределенных пауков.
Особенности [ править ]
Frontera написана в основном на Python . Транспорт и форматы данных хорошо абстрагированы, а готовые реализации включают поддержку MessagePack , JSON , Kafka и ZeroMQ .
- Работа в режиме онлайн: небольшие пакеты запросов, парсинг выполняется сразу после получения.
- Подключаемая внутренняя архитектура: логика низкоуровневого хранилища отделена от политики сканирования.
- Три режима запуска: одиночный процесс, распределенные пауки, распределенные бэкэнд и пауки.
- Прозрачный поток данных, позволяющий легко интегрировать пользовательские компоненты.
- Абстракция шины сообщений, позволяющая реализовать собственный транспорт (ZeroMQ и Kafka доступны из коробки).
- Бэкэнды хранилища SQLAlchemy и HBase .
- Пересмотр логики (только с бэкэндом СУБД).
- Необязательное использование Scrapy для извлечения и анализа.
- Лицензия BSD с тремя пунктами , позволяющая использовать в любом коммерческом продукте.
- Поддержка Python 3.
Сравнение с другими поисковыми роботами [ править ]
Хотя Frontera сам по себе не является поисковым роботом, для него требуется архитектура потокового сканирования, а не пакетный подход. [ необходима цитата ]
StormCrawler - еще один ориентированный на поток краулер, построенный на основе Apache Storm , с использованием некоторых компонентов из экосистемы Apache Nutch. Кластер Scrapy был разработан ISTResearch с учетом точного мониторинга и управления очередью. Эти системы обеспечивают механизмы выборки и / или постановки в очередь, но не содержат базы данных ссылок или обработки контента.
Боевые испытания [ править ]
В Scrapinghub Ltd. есть сканер, обрабатывающий 1600 запросов в секунду на пике, построенный с использованием в основном Frontera, использующего Kafka в качестве шины сообщений и HBase в качестве хранилища состояний ссылок и базы данных ссылок. Такой краулер работает циклично, каждый цикл занимает 1,5 месяца и в результате получается 1,7 млрд загруженных страниц. [2]
Сканирование испанского Интернета привело к появлению 46,5 млн страниц за 1,5 месяца в кластере AWS с двумя компьютерами-пауками. [3]
История [ править ]
Первая версия Frontera работала в едином процессе, как часть настраиваемого планировщика для Scrapy , используя базу данных SQLite на диске для хранения состояний ссылок и очереди. Он мог ползать несколько дней. Достигнув некоторого заметного количества ссылок, он стал тратить все больше и больше времени на запросы SELECT, что сделало сканирование неэффективным. На этот раз Frontera разрабатывается в рамках программы Memex DARPA и включена в его каталог проектов с открытым исходным кодом. [4]
В 2015 году последующие версии Frontera использовали HBase для хранения базы данных ссылок и очереди. Приложение было распределено на две части: бэкэнд и сборщик. Бэкэнд отвечал за связь с HBase с помощью Kafka, а сборщик только читал тему Kafka с URL-адресами для сканирования и выдавал результаты сканирования в другую тему, используемую бэкэндом, создавая замкнутый цикл. В это время был реализован прототип очереди первого приоритета, пригодный для сканирования в веб-масштабе. Очередь создавала пакеты с ограничениями на количество хостов и запросов на хост.
Следующей важной вехой в развитии Frontera стало внедрение стратегии сканирования и работника стратегии наряду с абстракцией шины сообщений. Стало возможным программировать настраиваемую стратегию сканирования, не имея дело с низкоуровневым внутренним кодом, работающим с очередью. Простой способ сказать, какие ссылки должны быть запланированы, когда и с каким приоритетом, сделал Frontera действительно пограничным фреймворком для сканирования. Kafka был довольно тяжелым требованием для небольших поисковых роботов, а абстракция шины сообщений позволяла интегрировать практически любую систему обмена сообщениями с Frontera.
См. Также [ править ]
- Документация Frontera на ReadTheDocs.
Ссылки [ править ]
- ^ "Выпуски · Scrapinghub / frontera" . github.com . Проверено 7 апреля 2021 .
- ↑ Сибиряков, Александр (29 марта 2017 г.). "Frontera: архитектура фреймворка для обхода веба и текущие проблемы" . Хабрахабр .
- ↑ Сибиряков, Александр (15 октября 2015 г.). "frontera-open-source-large-scale-web-crawling-framework" . Speakerdeck .
- ^ «Открытый каталог, Memex (поиск по домену)» .