- Регистрация
- 09.10.2015
- Сообщения
- 3 916
- Реакции
- 3 883
- Баллы
- 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

- Номер конкурса шаблонов
- Пятый конкурс шаблонов
- Уровень сложности
- Продвинутый
- Категория
- Парсинг
Вложения
Последнее редактирование:









