se2016 java vladimir mikhel "scrapping the web"

42
Scrapping the web Грабим веб

Upload: inhacking

Post on 17-Feb-2017

43 views

Category:

Software


3 download

TRANSCRIPT

Scrapping the web

Грабим веб

Команда

Проблемы- Мобильная версия сайта

- Мобильное приложение для ..

- Проиндексировать содержимое сайта (поиск)

- Приложение-читалка (Flipboard, ..)

- Мониторинг / аггрегация контента соцсетей по тегу / геотегу / группе /..

- Агрегация контента одной организации

- Собрать все товарные позиции в интернет магазине (Alibaba, ..)

- Сниппет страницы

SAAS

поиск для сайтов

Apache Solr DataImportHandler

jdbc/DIH

• -full-import

• -delta-import

к просмотру страницк продолжительности посещенияуменьшение

Интересные цифры

1 – вводим URL сайта

2 – процесс краулинга ~20 секунд

3 – тестуруем выдачус картинками

+ код для вставки на сайт

Нужен парсер!

Маска

Пример - маска для сбора данных из OG-тегов

Масок много

- System Masks – High Level level < 0.2f

- Custom Masks (Site / Domain) 0.2f <= level <0.4f

- System Masks – Low Level 0.4f <= level

Выходной документ JSON / базовые поля_id,

_url,

_canonical,

_title,

_category, //category/rubric on site

_subCategory, // 1 level deeper

_siteName,

_image,

_imageGif,

_images(true),

_imagesGif(true),

_imagesTotal,

_description,

_descriptionRss,

_body,

_bodyPresentedHtml,

_bodyPresentedJson,

_bodyNe,

_bodyPresentedHtmlNe,

_bodyPresentedJsonNe,

_sumtext,

_base,

_authorName,

_authorUrl,

_types(true), //URL contexts

_tagsNavi(true), // site navigational tags

_tagsBody(true), // nouns and adjectives detected with standard postprocessor in body

_neBody(true),

_keywords(true), // mainly meta keywords

_language, // language 2letter

_tags(true), // sum of tag field with type prefixes

_datePublished,

_dateParsed,

_videoYoutube,

_videoVimeo,

_generator, // CMS provided

_cmsName, // CMS name in canonical form

_cmsVersion, // CMS version in canonical form

_robots(true),

_noindex

Постпроцессоры - их тоже многоensureBodyRss (_descriptionRss)

htmlPresenterPostprocessor (_bodyPresentedJson/_bodyPresentedHtml)

htmlCleanerPostprocessor

ensureDocumentId (md5Hex(url))

ensureBody (_description)

ensureImages (относительный в абсолютный _image, _imageGif, _images, _imagesGif)

ensureParsedDate

descriptionPresentedPostprocessor (540 символов || _bodyPresentedJson 260-270 символов)

imageGifPostprocessor(_image ->_imageGif /_images ->_imagesGif)

firstImagePresentedPostprocessor (_images[0] ->_image, _imagesGif[0] -> _imageGif, _bodyPresentedJson[0 img] -> _image)

taggerNePostprocessor (->_neBody)

myNewsTagImploderPostprocessor (_tags <- _types, _tagsNavi, _neBody, _keywords, _language) (TagType (__siT, __siC, __kwd) -> _tags)

docdresserPostprocessor (DocDresser tags -> _tags)

deduplicatorPostprocessor (!allowDuplicates)

imagePostProcessor - отправляет на закачку

imageCounterPresentedPostprocessor (_imagesTotal)

ПИВОТ

Новости Технологии Смешное

развлечения, новости, статьи, видео

все лучшее в одномприложении

Новостныесайты

Глянец Галереи Видео гиф

Разные форматыотображения

Инстаграм фиды Твиттер фиды

Нужен новый формат документа

PRESENTED JSON

Нужно тегирование

FREEBASE тегированиеDeprecated - Google WTF?

● -пример словаря

● -пример документа с тегами

Отбрасываем категории топиков FREEBASE● Оставляем топики <= 3 слова

● Оставляем RU, UA, EN

● Индексируем в Elastic Search

Пользователи требуют RSS

НУЖЕН “УМНЫЙ” ПАРСЕРнаходить тело статьи и делать это хорошо

ШАГ 1 - Нахождение опорной точки в DOM

нечеткий поиск RSS / title – скриншот-пример

Плохие слова

ШАГ 2 - Нахождение граничных точек

сверхуснизувнутри баннер читайте так

же

СКРИНШОТ выделенный кусокграничного

ШАГ 3 – Оценка вариантов

● Плотность текста

● Содержит ноду с высокой плотностью

● Количество изображений

● Содержание видео эмбедов

● Является вероятным article контейнером

● Содержит вероятный article контейнер

● Глубина DOM блока

● Удаленность от опорной точки

Общая архитектура системыБлок-схема

Синтаксис и демонстрация на тестовом стенде

Запуски скорость работы

Наше приложение открылось заоткрылось за

Планы на будущее- МашинЛернинг нейросети над масками DOM

- конвертация форматов

Тут можно упомянуть конкурентные решения / че как

- ML над DOM

- ML над рендером - computer vision [diffbot]

- сторонние эвристические решения - Boilerpipe,

СюрпризДоступ к тестовому стенду http://..

Контакты