Несколько методов сбора данных в больших данных
Несколько методов сбора данных в больших данных

Всем привет, мы снова встретились, я ваш друг Цюаньчжаньцзюнь.

один、коллекциябольшие данныеметод

1.1通过系统日志коллекция大данные

Инструменты, используемые для сбора системных журналов, в настоящее время являются наиболее широко используемыми: Chukwa из Hadoop, Apache Flume, Scribe из Facebook и Kafka из LinkedIn. Здесь главное — выучить Флюм.

Flume — это высоконадежная распределенная система сбора, агрегации и передачи данных. Flume поддерживает настройку различных отправителей данных в системе журналов для сбора данных, выполнения простой обработки данных и записи получателям, например в текстовом формате и в формате HDFS.

Суть Flume на самом деле заключается в сборе данных из источников данных и последующей отправке собранных данных в назначенное место назначения...

1.2 Сбор больших данных через сеть

Сетевой сбор подразумевает получение больших данных с веб-сайтов через веб-сканеры или общедоступные API-интерфейсы веб-сайтов. Этот метод позволяет извлекать неструктурированные данные с веб-страниц, сохранять их в виде унифицированных локальных файлов данных и структурировать их для хранения. Он поддерживает сбор изображений, аудио, видео и других файлов или вложений.

Вообще говоря, инструменты веб-сканирования можно в основном разделить на три категории: распределенные инструменты веб-сканера (Nutch), инструменты веб-сканера Java (Crawler4j, WebMagic, WebCollector) и инструменты веб-сканера, отличные от Java (Scrapy).

1.2.1 Принцип веб-сканера

Так называемый веб-сканер на самом деле представляет собой программу или скрипт, который автоматически сканирует веб-информацию в соответствии с определенными правилами.

Веб-сканеры могут автоматически собирать содержимое всех страниц, к которым они имеют доступ, и предоставлять источники данных для поисковых систем и анализа больших данных. Обычно они выполняют три функции: сбор данных, обработка данных и хранение данных.

Как веб-сканеры сканируют данные? Это связано с тем, что в дополнение к текстовой информации, которую могут просматривать пользователи, веб-страница также содержит некоторую информацию о гиперссылках. Получая эти URL-адреса гиперссылок и дополняя их определенным алгоритмом, сканер может получить данные.

1.2.2 Рабочий процесс сканера

В базовых условиях сканер сначала получает часть начального URL-адреса, помещает эти URL-адреса в очередь URL-адресов для сканирования, извлекает URL-адрес, подлежащий сканированию, из очереди, анализирует DNS для получения IP-адреса хоста, а затем загружает и сохраните веб-страницу, соответствующую URL-адресу. Наконец, эти URL-адреса помещаются в очередь сканирования, и цикл продолжается.

1.2.3 Стратегия сканирования сканером

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

  • Универсальная сеть рептилий,Также известна как вся сеть рептилий.,В основном для поисковых систем порталов и крупных поставщиков веб-услуг для сбора данных.,Далее она подразделяется на стратегию, ориентированную на глубину, и стратегию, ориентированную на ширину.
  • В фокусе Интернетрептилия,Также известен как тематическая сеть рептилий.,Это относится к сети, которая выборочно сканирует страницы, относящиеся к заранее определенным темам. То есть есть очевидная тема,Например, текст、Например, картинки... В Интернете рептилия делится на несколько типов: 1. По содержанию.、2. На основе структуры ссылок、3. На основе обучения с подкреплением (?)、4. В зависимости от контекста(?)
  • Инкрементная сетевая рептилия означает, что полученная целевая веб-страница должна быть, насколько это возможно, новой веб-страницей.
  • глубокая сеть рептилий,Если те страницы, которые могут быть проиндексированы традиционными поисковыми системами, классифицируются как поверхностные веб-страницы,Тогда страницы, полученные рептилиями глубокой сети, являются «страницами глубокой паутины» снаружи.
1.3 Специальные инструменты сканирования
1.3.1Scrapy

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

Хотя Scrpay очень мощный инструмент, он подходит для Python, а я никогда не сталкивался с Python, поэтому пока разберусь только в этой части...

1.3.2Crawler4j、WebMagic、WebCollector

Все эти три являются фреймворками с открытым исходным кодом JAVA для автономных сканеров. Разница может быть в алгоритме и планировании? После поиска этого пункта я не смог его найти, поэтому просто предположу это.

Здесь я воспользуюсь WebMagic, чтобы сделать демо-версию и попробовать!

1.4 Запустите WebMagic

Я нашел это после BaiduWebMagicизОфициальная документация

Проверьте это по примеру внутри:

  • Сначала создайте новый проект maven, независимо от того, является ли он веб-проектом или нет, при условии, что он является maven. Ну, конечно, вы можете вручную импортировать jar-пакет без maven, но для удобства используйте maven.
  • На официальном сайте есть официальный простой пример.
Язык кода:javascript
копировать
public class GithubRepoPageProcessor implements PageProcessor {

    // Часть 1. Соответствующие конфигурации для сканирования веб-сайта, включая кодировку, интервал сканирования, время повтора и т. д.
    private Site site = Site.me().setRetryTimes(3).setSleepTime(1000);

    @Override
    // процесс — это основной интерфейс для настройки логики рептилий. Напишите здесь логику извлечения.
    public void process(Page page) {
        // Часть 2. Определите, как извлечь информацию о странице и сохранить ее.
        page.putField("author", page.getUrl().regex("https://github\\.com/(\\w+)/.*").toString());
        page.putField("name", page.getHtml().xpath("//h1[@class='entry-title public']/strong/a/text()").toString());
        if (page.getResultItems().get("name") == null) {
            //skip this page
            page.setSkip(true);
        }
        page.putField("readme", page.getHtml().xpath("//div[@id='readme']/tidyText()"));

        // Часть 3. Найдите следующий URL-адрес страницы для сканирования.
        page.addTargetRequests(page.getHtml().links().regex("(https://github\\.com/[\\w\\-]+/[\\w\\-]+)").all());
    }

    @Override
    public Site getSite() {
        return site;
    }

    public static void main(String[] args) {

        Spider.create(new GithubRepoPageProcessor())
                //Начинаем захват с «https://github.com/code4craft»
                .addUrl("https://github.com/code4craft")
                //Запускаем 5 потоков для захвата
                .thread(5)
                //запускатьрептилия                .run();
    }
}

Поработав некоторое время, я обнаружил, что сообщается об ошибке...

Язык кода:javascript
копировать
log4j:WARN No appenders could be found for logger (us.codecraft.webmagic.scheduler.QueueScheduler).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

На первый взгляд проблема связана с log4j. Попробуйте добавить файл конфигурации log4j.properties и запустить его еще раз, хорошо? На самом деле он все еще сообщал об ошибке...

Ну, взглянув на официальную документацию, оказывается, автор сказал:

Язык кода:javascript
копировать
WebMagic использует slf4j-log4j12 в качестве реализации slf4j, если вы настроите реализацию slf4j самостоятельно.,Пожалуйста, удалите эту зависимость из вашего проекта.

ок, позвольте мне заменить это обычной зависимостью log4j:

Язык кода:javascript
копировать
<dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.7.25</version>
    </dependency>

Конечно же, после этих операций он будет работать нормально. Нажмите «Выполнить», чтобы начать работу! Есть новая проблема...

Язык кода:javascript
копировать
[us.codecraft.webmagic.Spider] - Spider github.com started!
[us.codecraft.webmagic.downloader.HttpClientDownloader] - download page https://github.com/code4craft error

Была ли причиной сбоя «форс-мажорная ситуация» в сети?

  • Продолжайте искать причину последний в Официальная Нашел еще одну демо в документации,Попробуйте использовать:
Язык кода:javascript
копировать
public class SinaBlogProcessor implements PageProcessor {

    public static final String URL_LIST = "http://blog\\.sina\\.com\\.cn/s/articlelist_1487828712_0_\\d+\\.html";

    public static final String URL_POST = "http://blog\\.sina\\.com\\.cn/s/blog_\\w+\\.html";

    private Site site = Site
            .me()
            .setDomain("blog.sina.com.cn")
            .setSleepTime(3000)
            .setUserAgent(
                    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.65 Safari/537.31");

    @Override
    public void process(Page page) {
        // страница списка
        if (page.getUrl().regex(URL_LIST).match()) {
            page.addTargetRequests(page.getHtml().xpath("//div[@class=\"articleList\"]").links().regex(URL_POST).all());
            page.addTargetRequests(page.getHtml().links().regex(URL_LIST).all());
            //Страница статьи
        } else {
            page.putField("title", page.getHtml().xpath("//div[@class='articalTitle']/h2"));
            page.putField("content", page.getHtml().xpath("//div[@id='articlebody']//div[@class='articalContent']"));
            page.putField("date",
                    page.getHtml().xpath("//div[@id='articlebody']//span[@class='time SG_txtc']").regex("\\((.*)\\)"));
        }
    }

    @Override
    public Site getSite() {
        return site;
    }

    public static void main(String[] args) {
        Spider.create(new SinaBlogProcessor()).addUrl("http://blog.sina.com.cn/s/articlelist_1487828712_0_1.html")
                .run();
    }
}

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

Подвести итог

Сбор данных, вероятно, осуществляется с помощью системных журналов и сканеров. Хотя я попробовал метод WebMagic в сканере, я хотел изменить код для достижения желаемых результатов, но из-за проблем со временем я это сделал. систематически не изучал используемые в нем регулярные выражения, поэтому могу только с сожалением остановиться и оставить эту идею на реализацию в будущем.

ссылка

Официальная документация WebMagic

Сайт на китайском языке C

Издатель: Лидер стека программистов полного стека, укажите источник для перепечатки: https://javaforall.cn/143866.html Исходная ссылка: https://javaforall.cn

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose