Как проверить миллиарды страниц? [закрытый]

Действительно ли возможно проверить миллиарды страниц на единственном сервере?

12
задан Peter Mortensen 20 December 2009 в 10:37
поделиться

4 ответа

Нет, если вы хотите, чтобы данные были актуальными.

Даже маленький игрок в поисковой игре пронумеровал бы пропущенные страницы на несколько миллиардов.

" В 2006 году Google проиндексировал более 25 миллиардов веб-страниц, [32] 400 миллионов запросов в день, [32] 1,3 миллиарда изображений и более одного миллиарда сообщений Usenet. " - Википедия

И помните, что в цитате упоминаются цифры из 2006 года. Это древняя история. Свежесть содержания:

Новый контент постоянно добавляется с очень большим темпом (реальность).

  • Существующие страницы часто меняются - вам нужно будет перерисовать их по двум причинам: а) определить, что они мертвы, б) определить, изменилось ли их содержание.
  • Вежливость гусениц:

    1. Нельзя переполнять ни один из сайтов. Если вы несколько раз попадаете на любой крупный сайт с одного и того же IP-адреса, вы можете вызвать либо запрос CAPTCHA, либо они заблокируют ваш IP-адрес. Сайты будут делать это на основе пропускной способности, частоты запросов, # запросов "плохих" страниц и многого другого.
    2. Существует протокол robots.txt, по которому сайты, подчиняясь ему, подвергают сайты опасности.
    3. Существует стандарт sitemap (карты сайта), который сайты выставляют на обозрение ползунам, используют его для помощи в изучении - вы также можете (по вашему выбору) взвешивать относительную важность страниц на сайте и использовать время жизни в вашем кэше, если это указано на карте сайта.

    Сократите объем работы, которую вам необходимо проделать:

    1. Часто сайты выставляют себя через несколько имён - вы захотите обнаружить идентичные страницы - это может произойти на одной и той же URL или на отдельных URL. Рассмотрим хэш на содержимом страницы (минус заголовки с датами/временами, которые постоянно меняются). Отслеживайте эквивалентность этих страниц и пропустите их в следующий раз или определите, есть ли хорошо известное отображение между данными сайтами, чтобы вам не приходилось ползать по ним.
    2. СПАМ. Тонны людей там делают тонны страниц, которые просто проходят через Google, но они "засеивают" себя по всей паутине, чтобы заставить себя ползать.

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

    Если вы хотите нажать кнопку быстрой перемотки вперед и просто перейти к обработке страниц со своим собственным уникальным алгоритмом...., вы, скорее всего, можете нажать на предварительно собранный гусеничный движок, если он вам нужен быстро - подумайте "80 ног", как выделено в Программируемая паутина. Они делают это, используя вычислительные мощности клиентской стороны.

    80 legs использует машинные циклы от детей, играющих в игры на веб-сайтах. Подумайте о фоновом процессе на веб-странице, который делает вызов и работает, пока вы используете эту страницу/сайт, не зная об этом, потому что они используют стек технологии Plura.

    "Plura Processing разработала новую и инновационную технологию для распределенных вычислений. Наша патентованная технология может быть встроена в любую веб-страницу. Посетители этих веб-страниц становятся узлами и выполняют очень маленькие вычисления для приложения, работающего в нашей сети распределенных вычислений". - Plura Demo Page

    Таким образом, они "ползают" по тысячам узлов на тысячах IP, вежливо относятся к сайтам и в результате быстро ползают. Лично я не знаю, что меня волнует такой стиль использования браузера конечного пользователя, если только он не был озвучен на всех сайтах, использующих их технологию ОЧЕНЬ четко - но это нестандартный подход, если ничего больше.

    Есть и другие написанные ползунки, которые находятся в проектах, управляемых сообществом, и которые вы, вероятно, могли бы использовать.

    Как отмечали другие респонденты - делайте математику. Вам понадобится ~2300 просмотренных страниц в секунду, чтобы успевать за просмотром 1B страниц каждые 5 дней. Если вы хотите подождать дольше, число будет уменьшаться. Если вы думаете, что собираетесь проползти больше 1Б, число увеличивается. Простая математика.

    Удачи!

    37
    ответ дан 2 December 2019 в 02:52
    поделиться

    Распространение большого количества страниц (миллиард страниц) - сложная проблема. Вот некоторые из проблем:

    • Пропускная способность сети. Предполагая, что каждая страница имеет размер 10 Кбайт, вы говорите в общей сложности о Необходимо получить 10 терабайт.

    • Задержка в сети / медленные серверы / перегрузка означают, что вы не собираетесь достичь чего-то вроде теоретической пропускной способности вашего сетевого соединения. Многопоточность вашего поискового робота помогает только настолько.

    • Я предполагаю, что вам нужно хранить информацию, которую вы извлекли из миллиардов страниц.

    • Ваш HTML-синтаксический анализатор должен иметь дело с веб-страницами, которые не работают во всех видах странными способами.

    • Чтобы избежать зацикливания, вам нужно определить, что вы «уже сделали эту страницу».

    • Страницы меняются, поэтому вам нужно вернуться к ним.

    • Вам нужно иметь дело с роботами .txt 'и другие соглашения, которые управляют поведением (корректных) поисковых роботов.

    18
    ответ дан 2 December 2019 в 02:52
    поделиться

    хм .. если вы можете "сканировать" 1 страницу в секунду, вы можете всего 86400 страниц в день (11574,074 дней, необходимых для завершения вашего 1-го миллиарда, используйте это для расчета необходимого времени в соответствии с вашим скорость страницы в секунду) .. Требуется терпение .. и, конечно же, место для хранения ..

    2
    ответ дан 2 December 2019 в 02:52
    поделиться

    Оригинальная бумага по странице и Брин (Google) 1998 описана ползание 25 миллионов страниц на 4 машины за 10 дней. Они открывали 300 соединений одновременно на машину. Я думаю, что это все еще довольно хорошо. В моих собственных экспериментах с помощью шельфа, работающих на Linux, я мог надежно открыть 100-200 одновременных соединений.

    Существует три основных вещей, которые вам нужно сделать, пока ползают: (1) Выберите, что сканировать следующий, (2) Получите эти страницы, (3) хранить эти страницы. Для (1) Вам необходимо реализовать какую-то приоритетную очередь (то есть, чтобы сделать ширину первого поиска или опихи), вам также нужно отслеживать, где вы были. Это можно сделать с помощью фильтра Bloom. Bloom Фильтры (посмотрите на википедии) также можно использовать для хранения, если страница имела файл Robot.txt, и если префикс данного URL исключен.

    (2) Получение страниц является фиксированной стоимостью, и вы не можете многое делать об этом; Однако, как на одной машине, вы ограничены количеством открытых соединений, если у вас есть кабель, вы, вероятно, не найдете близок к употреблению всю доступную ширину полосы. Возможно, вам придется беспокоиться о пропускной способности Caps, хотя.

    (3) Хранение страниц, как правило, выполняется в файле веб-архива, такое, что делает интернет-архив. С сжатием вы, вероятно, можете хранить миллиард страниц в 7 терабайтах, поэтому хранилище было бы доступно иметь миллиард страниц. В качестве оценки того, что может сделать одну машину, предположим, что вы получите дешевую машину на 200 долларов с 1 ГБ или ОЗУ и 160 ГБ жесткого бизнеса. На странице 20 кБ (используют запросы на диапазон, чтобы избежать глотания целых страниц), 10 миллионов страниц займет 200 ГБ, но сжатый составляет около 70 ГБ.

    Если вы сохраняете архив, что ваша поисковая система запускается (на которой вы уже рассчитали, скажем, страницу RING и BM25), а также активный архив сканирования, затем вы потребляли 140 ГБ. Это оставляет вам около 20 ГБ для других случайных материалов, которые вам нужно обрабатывать. Если вы работаете в памяти, вам нужно попытаться сохранить столько же вашим приоритетной очереди и фильтрами Bloom в оперативной памяти, насколько это возможно, вы также прямо на краю, что это возможно. Если вы ползете 300 000 страниц / день, это заберет вас чуть более месяца / 10 миллионов ползания

    8
    ответ дан 2 December 2019 в 02:52
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: