- Регистрация
- 09.10.2015
- Сообщения
- 3 916
- Благодарностей
- 3 867
- Баллы
- 113
Для чего нужен такой парсер контента? Чтобы
Инструкция по компиляции парсера:
- Скачайте архив из аттача, распакуйте его
- Установите git: https://git-scm.com/download/win (необходим для установки зависимостей)
- Установите go: https://golang.org/dl/ (я использовал версию 1.14, инсталлятор "go1.14.windows-amd64.msi")
- После установки откройте cmd.exe и перейдите в папку с распакованным шаблоном и файлами:
- Установите зависимости:
Код:go get github.com/urfave/cli go get github.com/go-shiori/go-readability
- Скомпилируйте парсер:
Код:go build readability_cli.go
- Протестируйте его работоспособность (данный текст означает что всё хорошо, просто мы не передали обязательный параметр --url):
После этих простых манипуляций вы можете парсить контент без мусора просто в гигантских масштабах с молниеносной скоростью. А чтобы понять как это всё работает - я добавил тестовый шаблон readability_example.xmlz, который уже и запускает вложенный шаблон-парсер со следующим функционалом:
- Парсинг на запросах, без браузера.
- Очень точное получение основного контента за счёт использования актуальной библиотеки (а не старых решений на php/python/.net 2000-2010 годов, которые мало того что грузят CPU, так ещё и парсят мусор).
- Мультиязычная обработка (нет привязки к языкам, парсер должен переварить хоть тайский, хоть китайский).
- Встроенное кеширование через md5-хэш URL (в случае если вы парсите контент в реалтайме под каждую страницу как я, то вам нет смысла гонять парсер по одним и тем же ссылкам несколько раз).
- Использование рандомного прокси из проксичекера (можно отключить для ускорения).
- Валидация HTTP-статус кода (проверка, что страница отдала 200 код).
- Пропуск всех результатов, где контент закодирован Brotli (в данный момент ZP не поддерживает декодирование).
- Проверка типа данных (поддерживается парсинг только html, чтоб не попадались pdf/docx или другие документы).
- Очистка результата от любых ссылок (очень крутой алгоритм, который я уже давно использую, но если нужно - это можно отключить).
- Исправление пробелов/табов/переводов строк (дублей и некорректных завершений).
- Исправление пробелов перед важными пунктуационными символами.
- Два метода для удаления дубликатов (среди строк и предложений).
- Эвристический метод для определения бинарных данных (может иногда быть слишком агрессивным, но на больших объемах лучше так).
- Эвристический метод для удаления результатов, состоящих практически из одних цифр.
- Сохранение метаданных рядом в кэше (добавлено сохранение только URL в xml-подобной структуре, но с легкостью можно добавить свои данные: нишу, запрос и тд).
Те, кто протестируют шаблон - будут приятно удивлены скоростью парсинга и минимальной нагрузкой на CPU, которая достигается как раз за счёт использования golang
- Категория
- Парсинг
- Номер конкурса шаблонов
- Пятый конкурс шаблонов
- Уровень сложности
- Продвинутый
Вложения
-
85,1 КБ Просмотры: 1 834
Для запуска проектов требуется программа ZennoPoster или ZennoDroid.
Это основное приложение, предназначенное для выполнения автоматизированных шаблонов действий (ботов).
Подробнее...
Для того чтобы запустить шаблон, откройте нужную программу. Нажмите кнопку «Добавить», и выберите файл проекта, который хотите запустить.
Подробнее о том, где и как выполняется проект.
Последнее редактирование: