SlideShare a Scribd company logo
1 of 42
Download to read offline
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://..
Контакты

More Related Content

Viewers also liked

Viewers also liked (14)

4java
4java4java
4java
 
Jvm
JvmJvm
Jvm
 
Applet
AppletApplet
Applet
 
Javabeans
JavabeansJavabeans
Javabeans
 
Applet
AppletApplet
Applet
 
Javabeginners
JavabeginnersJavabeginners
Javabeginners
 
Concurency
ConcurencyConcurency
Concurency
 
Seminario 7-final
Seminario 7-finalSeminario 7-final
Seminario 7-final
 
Java c (1)
Java c  (1)Java c  (1)
Java c (1)
 
Career development
Career developmentCareer development
Career development
 
SE2016 BigData Den Golotyuk "Big Data from 30 million daily users"
SE2016 BigData Den Golotyuk "Big Data from 30 million daily users"SE2016 BigData Den Golotyuk "Big Data from 30 million daily users"
SE2016 BigData Den Golotyuk "Big Data from 30 million daily users"
 
Black Soap for Acne
Black Soap for AcneBlack Soap for Acne
Black Soap for Acne
 
Java swing
Java swingJava swing
Java swing
 
Java android
Java androidJava android
Java android
 

Similar to SE2016 Java Vladimir Mikhel "Scrapping the web"

Web весна 2013 лекция 10
Web весна 2013 лекция 10Web весна 2013 лекция 10
Web весна 2013 лекция 10
Technopark
 
Web осень 2012 лекция 10
Web осень 2012 лекция 10Web осень 2012 лекция 10
Web осень 2012 лекция 10
Technopark
 
Эволюция BackDoor.Flashback
Эволюция BackDoor.FlashbackЭволюция BackDoor.Flashback
Эволюция BackDoor.Flashback
hexminer
 
создание тематических сдл порталов, их оптимизация и монетизация. артишук олег
создание тематических сдл порталов, их оптимизация и монетизация.   артишук олегсоздание тематических сдл порталов, их оптимизация и монетизация.   артишук олег
создание тематических сдл порталов, их оптимизация и монетизация. артишук олег
Oleg Artyshuk
 
Pavel Dovbush Toster
Pavel Dovbush Toster Pavel Dovbush Toster
Pavel Dovbush Toster
Pavel Dovbush
 
Алексей Рылко, iProspect — «SEO-инсайды, которые вы можете достать из логов ...
Алексей Рылко, iProspect  — «SEO-инсайды, которые вы можете достать из логов ...Алексей Рылко, iProspect  — «SEO-инсайды, которые вы можете достать из логов ...
Алексей Рылко, iProspect — «SEO-инсайды, которые вы можете достать из логов ...
shevchuk_conf
 

Similar to SE2016 Java Vladimir Mikhel "Scrapping the web" (20)

Bootstrap 3. Адаптивная верстка для WordPress
Bootstrap 3. Адаптивная верстка для WordPressBootstrap 3. Адаптивная верстка для WordPress
Bootstrap 3. Адаптивная верстка для WordPress
 
Оптимальная архитектура масштабируемого плагина WordPress на Custom Post Type...
Оптимальная архитектура масштабируемого плагина WordPress на Custom Post Type...Оптимальная архитектура масштабируемого плагина WordPress на Custom Post Type...
Оптимальная архитектура масштабируемого плагина WordPress на Custom Post Type...
 
Web весна 2013 лекция 10
Web весна 2013 лекция 10Web весна 2013 лекция 10
Web весна 2013 лекция 10
 
5 urok
5 urok5 urok
5 urok
 
Web осень 2012 лекция 10
Web осень 2012 лекция 10Web осень 2012 лекция 10
Web осень 2012 лекция 10
 
Алексей Андросов "Тотальная заморозка = быстрая загрузка"
Алексей Андросов "Тотальная заморозка = быстрая загрузка"Алексей Андросов "Тотальная заморозка = быстрая загрузка"
Алексей Андросов "Тотальная заморозка = быстрая загрузка"
 
Эволюция BackDoor.Flashback
Эволюция BackDoor.FlashbackЭволюция BackDoor.Flashback
Эволюция BackDoor.Flashback
 
Олег Мохов "Драматическая история одной маленькой промостранички"
Олег Мохов "Драматическая история одной маленькой промостранички"Олег Мохов "Драматическая история одной маленькой промостранички"
Олег Мохов "Драматическая история одной маленькой промостранички"
 
создание тематических сдл порталов, их оптимизация и монетизация. артишук олег
создание тематических сдл порталов, их оптимизация и монетизация.   артишук олегсоздание тематических сдл порталов, их оптимизация и монетизация.   артишук олег
создание тематических сдл порталов, их оптимизация и монетизация. артишук олег
 
Trening modul2-webinar12
Trening modul2-webinar12Trening modul2-webinar12
Trening modul2-webinar12
 
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
 
Pavel Dovbush Toster
Pavel Dovbush Toster Pavel Dovbush Toster
Pavel Dovbush Toster
 
WinDbg в руках .NET разработчика
WinDbg в руках .NET разработчикаWinDbg в руках .NET разработчика
WinDbg в руках .NET разработчика
 
Алексей Рылко, iProspect — «SEO-инсайды, которые вы можете достать из логов ...
Алексей Рылко, iProspect  — «SEO-инсайды, которые вы можете достать из логов ...Алексей Рылко, iProspect  — «SEO-инсайды, которые вы можете достать из логов ...
Алексей Рылко, iProspect — «SEO-инсайды, которые вы можете достать из логов ...
 
Иван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияИван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизация
 
Как избавиться от Google Panda
Как избавиться от Google PandaКак избавиться от Google Panda
Как избавиться от Google Panda
 
Как выйти из-под Google Panda. Симптомы, причины, кейсы.
Как выйти из-под Google Panda. Симптомы, причины, кейсы.Как выйти из-под Google Panda. Симптомы, причины, кейсы.
Как выйти из-под Google Panda. Симптомы, причины, кейсы.
 
Rich UI on Dojo Toolkit and Zend Framework
Rich UI on Dojo Toolkit and Zend FrameworkRich UI on Dojo Toolkit and Zend Framework
Rich UI on Dojo Toolkit and Zend Framework
 
Автоматизация SEO-процессов в продуктовых компаниях - DVOMA.pro 30.08
Автоматизация SEO-процессов в продуктовых компаниях - DVOMA.pro 30.08Автоматизация SEO-процессов в продуктовых компаниях - DVOMA.pro 30.08
Автоматизация SEO-процессов в продуктовых компаниях - DVOMA.pro 30.08
 
Солянка seo хитростей для работы в арбитраже
Солянка seo хитростей для работы в арбитражеСолянка seo хитростей для работы в арбитраже
Солянка seo хитростей для работы в арбитраже
 

More from Inhacking

More from Inhacking (20)

SE2016 Fundraising Roman Kravchenko "Investment in Ukrainian IoT-Startups"
SE2016 Fundraising Roman Kravchenko "Investment in Ukrainian IoT-Startups"SE2016 Fundraising Roman Kravchenko "Investment in Ukrainian IoT-Startups"
SE2016 Fundraising Roman Kravchenko "Investment in Ukrainian IoT-Startups"
 
SE2016 Fundraising Wlodek Laskowski "Insider guide to successful fundraising ...
SE2016 Fundraising Wlodek Laskowski "Insider guide to successful fundraising ...SE2016 Fundraising Wlodek Laskowski "Insider guide to successful fundraising ...
SE2016 Fundraising Wlodek Laskowski "Insider guide to successful fundraising ...
 
SE2016 Fundraising Andrey Sobol "Blockchain Crowdfunding or "Mommy, look, I l...
SE2016 Fundraising Andrey Sobol "Blockchain Crowdfunding or "Mommy, look, I l...SE2016 Fundraising Andrey Sobol "Blockchain Crowdfunding or "Mommy, look, I l...
SE2016 Fundraising Andrey Sobol "Blockchain Crowdfunding or "Mommy, look, I l...
 
SE2016 Company Development Valentin Dombrovsky "Travel startups challenges an...
SE2016 Company Development Valentin Dombrovsky "Travel startups challenges an...SE2016 Company Development Valentin Dombrovsky "Travel startups challenges an...
SE2016 Company Development Valentin Dombrovsky "Travel startups challenges an...
 
SE2016 Company Development Vadym Gorenko "How to pass the death valley"
SE2016 Company Development Vadym Gorenko  "How to pass the death valley"SE2016 Company Development Vadym Gorenko  "How to pass the death valley"
SE2016 Company Development Vadym Gorenko "How to pass the death valley"
 
SE2016 Marketing&PR Jan Keil "Do the right thing marketing for startups"
SE2016 Marketing&PR Jan Keil "Do the right thing marketing for startups"SE2016 Marketing&PR Jan Keil "Do the right thing marketing for startups"
SE2016 Marketing&PR Jan Keil "Do the right thing marketing for startups"
 
SE2016 PR&Marketing Mikhail Patalakha "ASO how to start and how to finish"
SE2016 PR&Marketing Mikhail Patalakha "ASO how to start and how to finish"SE2016 PR&Marketing Mikhail Patalakha "ASO how to start and how to finish"
SE2016 PR&Marketing Mikhail Patalakha "ASO how to start and how to finish"
 
SE2016 UI/UX Alina Kononenko "Designing for Apple Watch and Apple TV"
SE2016 UI/UX Alina Kononenko "Designing for Apple Watch and Apple TV"SE2016 UI/UX Alina Kononenko "Designing for Apple Watch and Apple TV"
SE2016 UI/UX Alina Kononenko "Designing for Apple Watch and Apple TV"
 
SE2016 Management Mikhail Lebedinkiy "iAIST the first pure ukrainian corporat...
SE2016 Management Mikhail Lebedinkiy "iAIST the first pure ukrainian corporat...SE2016 Management Mikhail Lebedinkiy "iAIST the first pure ukrainian corporat...
SE2016 Management Mikhail Lebedinkiy "iAIST the first pure ukrainian corporat...
 
SE2016 Management Anna Lavrova "Gladiator in the suit crisis is our brand!"
SE2016 Management Anna Lavrova "Gladiator in the suit  crisis is our brand!"SE2016 Management Anna Lavrova "Gladiator in the suit  crisis is our brand!"
SE2016 Management Anna Lavrova "Gladiator in the suit crisis is our brand!"
 
SE2016 Management Aleksey Solntsev "Management of the projects in the conditi...
SE2016 Management Aleksey Solntsev "Management of the projects in the conditi...SE2016 Management Aleksey Solntsev "Management of the projects in the conditi...
SE2016 Management Aleksey Solntsev "Management of the projects in the conditi...
 
SE2016 Management Vitalii Laptenok "Processes and planning for a product comp...
SE2016 Management Vitalii Laptenok "Processes and planning for a product comp...SE2016 Management Vitalii Laptenok "Processes and planning for a product comp...
SE2016 Management Vitalii Laptenok "Processes and planning for a product comp...
 
SE2016 Management Yana Prolis "Please don't burn down!"
SE2016 Management Yana Prolis "Please don't burn down!"SE2016 Management Yana Prolis "Please don't burn down!"
SE2016 Management Yana Prolis "Please don't burn down!"
 
SE2016 Management Marina Bril "Management at marketing teams and performance"
SE2016 Management Marina Bril "Management at marketing teams and performance"SE2016 Management Marina Bril "Management at marketing teams and performance"
SE2016 Management Marina Bril "Management at marketing teams and performance"
 
SE2016 iOS Anton Fedorchenko "Swift for Server-side Development"
SE2016 iOS Anton Fedorchenko "Swift for Server-side Development"SE2016 iOS Anton Fedorchenko "Swift for Server-side Development"
SE2016 iOS Anton Fedorchenko "Swift for Server-side Development"
 
SE2016 iOS Alexander Voronov "Test driven development in real world"
SE2016 iOS Alexander Voronov "Test driven development in real world"SE2016 iOS Alexander Voronov "Test driven development in real world"
SE2016 iOS Alexander Voronov "Test driven development in real world"
 
SE2016 JS Gregory Shehet "Undefined on prod, or how to test a react application"
SE2016 JS Gregory Shehet "Undefined on prod, or how to test a react application"SE2016 JS Gregory Shehet "Undefined on prod, or how to test a react application"
SE2016 JS Gregory Shehet "Undefined on prod, or how to test a react application"
 
SE2016 JS Alexey Osipenko "Basics of functional reactive programming"
SE2016 JS Alexey Osipenko "Basics of functional reactive programming"SE2016 JS Alexey Osipenko "Basics of functional reactive programming"
SE2016 JS Alexey Osipenko "Basics of functional reactive programming"
 
SE2016 Java Valerii Moisieienko "Apache HBase Workshop"
SE2016 Java Valerii Moisieienko "Apache HBase Workshop"SE2016 Java Valerii Moisieienko "Apache HBase Workshop"
SE2016 Java Valerii Moisieienko "Apache HBase Workshop"
 
SE2016 Java Roman Ugolnikov "Migration and source control for your DB"
SE2016 Java Roman Ugolnikov "Migration and source control for your DB"SE2016 Java Roman Ugolnikov "Migration and source control for your DB"
SE2016 Java Roman Ugolnikov "Migration and source control for your DB"
 

SE2016 Java Vladimir Mikhel "Scrapping the web"