2010-04-05 3 views
4

Я хочу сканировать полезный ресурс (например, фоновое изображение ..) с определенных сайтов. Это не тяжелая работа, особенно с помощью некоторых замечательных проектов, таких как scrapy.Стратегия обновления веб-искателя

Проблема здесь, я не только просто хочу обходить этот сайт ОДИН РАЗ. Я также хочу, чтобы мой обход длился и сканировал обновленный ресурс. Поэтому я хочу знать, есть ли хорошая стратегия для веб-искателя для получения обновленных страниц?

Вот грубый алгоритм, о котором я думал. Я разделил процесс обхода на раунды. Каждый круглый репозиторий URL-адресов будет предоставлять искателю определенное число (например, 10000) URL-адресов для обхода. И затем следующий раунд. Подробные шаги:

  1. гусеничных добавить начальные адреса в хранилище URL
  2. гусеничных задать хранилище URL для не более URL N ползать
  3. гусеничных выборки URL-адрес, и обновить определенную информацию в хранилище URL, как и содержимое страницы, время выборки и изменение содержимого.
  4. просто вернуться к шагу 2

Для более точного определения, что мне еще нужно решить следующие вопросы: Как решить «обновить-Несс» веб-страницы, которая указывает на вероятность того, что эта сеть страница обновлена?

Поскольку это открытый вопрос, мы надеемся, что здесь будет проведена плодотворная дискуссия.

ответ

6

Алгоритм «партии», который вы описываете, является распространенным способом реализации этого, я работал над несколькими такими реализациями с помощью scrapy.

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

Интересная настройка заключается в том, чтобы разорвать планирование в краткосрочной перспективе (в рамках одной партии, внутри scrapy) и в долгосрочной перспективе (между пакетами сканирования), что дает некоторые преимущества более инкрементного подхода, сохраняя при этом вещи немного проще ,

Существует много подходов к проблеме упорядочивания обхода (как решить «обновленную»), о которой вы говорите, и лучший подход зависит от того, какие ваши приоритеты (свежесть и полнота, приходят ресурсы важнее других , и т.д.).

Я бы рекомендовал этот Web Crawling article Кристофер Олстон и Марк Наджорк. Это отличный обзор и охватывает темы, которые вас интересуют (модель пакетного сканирования и порядок сканирования).

+0

pdf доступной статьи: http://infolab.stanford.edu/~olston/publications/crawling_survey.pdf –

+0

См. Frontera для реализации этого с помощью Scrapy https://github.com/scrapinghub/frontera –

Смежные вопросы