Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


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

Определения

Парсинг – это процесс линейное сопоставление последовательности слов по правилам языка. Понятие «язык» рассматривается в самом широком контексте. Это может быть человеческий язык, используемый для коммуникации людей. А может и формализированный язык, в частности, любой язык программирования, а также разметки.

 

Парсинг сайтов – последовательный синтаксический анализ информации, размещённой на интернет-страницах. По сути – это автоматическое извлечение необходимой информации с сайта.

Для чего нужен парсинг?

Собственно парсинг нужен для извлечения корректной информации из страниц сайтов. За практическими примерами далеко ходить не надо:

 

1. Любая поисковая система парсит сайты. Так, например, ключевое слово в заголовке «ценится» больше, чем в обычном параграфе. Даже существует целое направление, по тому, как организовать информацию на сайте, чтобы он «поднялся в поиске»: SEO оптимизация.

2. Получение текущих курсов валют со специализированных сайтов.

3. На сайте УлГТУ (http://www.ulstu.ru/) почти всегда есть текущее официальное расписание занятий для всех групп всех курсов УлГТУ. Но есть несколько «но»: не всегда есть доступ в интернет, может случится так, что в самый ответственный момент сайт окажется недоступен. Поэтому некоторое время назад было создано приложение «Расписание занятий УлГТУ». Оно позволяет получать с сайта и хранить offline информацию о занятиях в университете.

4. Ну и, разумеется, все браузеры.

Почему именно парсинг?

Разумеется, извлекать информацию можно и без парсинга: вручную. Но есть несколько обстоятельств, которые будут склонять к парсингу (автоматическом способу):

 

1. Большие объёмы информации. В эпоху бурного роста Сети и жесточайшей конкуренции уже всем ясно, что объем информации с каждым годом всё увеличивается. Современные темпы жизни приводят к тому, что контента должно быть не просто много, а очень много, в количествах, намного превышающих пределы, возможные при ручном заполнении.

2. Частое обновление. Обслуживание огромного потока динамично меняющейся информации не в силах обеспечить один человек или даже слаженная команда операторов. Порой информация изменяется ежеминутно и в ручном режиме обновлять её вряд ли целесообразно.

 

В таких ситуация программа-парсер имеет огромное преимущество перед человеком, так как:

1. быстро обойдёт тысячи веб-страниц;

2. аккуратно отделит техническую информацию от «человеческой»;

3. безошибочно отберёт нужное и отбросит лишнее;

4. эффективно упакует конечные данные в необходимом виде.

Механизм работы

Подавляющее большинство веб-сайтов написано на html - стандартизированном языке разметки документов. А тот факт, что он стандартизирован, упрощает извлечение информации из html-страниц.

Можно по-разному получать необходимую информацию из html-страниц:

Банальный поиск подстрок. Так, например, можно получить все гиперссылки с веб-страницы (началом будет: href=”, между ними гиперссылка, а концом:”,)

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

Основной предыдущих двух методов – то, что они рассматривают html-страницы, как строки. А язык html-разметки реализует DOM-модель, что позволяет html-страницы, как дерево. Поэтому третий и самый лучший способ – парсинг (извлечение информации с учетом синтаксиса и DOM-модели).

Преимущества DOM-модели

Допустим, у нас есть html-документ и между открывающим и закрывающем тегом body есть что-то вроде этого:

<div class=”CattleCurrencyBox”>

<div class=”CattleCurrency” name=”usd”>

<div name=”16.06.2016”>значение</div>

<div name=”15.06.2016”>значение</div>

<div name=”14.06.2016”>значение</div>

</div>

<div class=”CattleCurrency” name=”eur”>

<div name=”16.06.2016”>значение</div>

<div name=”15.06.2016”>значение</div>

<div name=”14.06.2016”>значение</div>

</div>

</div>

Очевидно, что в данном случае поиск подстрок не поможет, так как существует несколько типовых элементов, которые тем не менее относятся к разным группам информации. Будет гораздо проще, если представить теги, как узлы графа, а сам html-код, как граф. Тогда будет достаточно найти узел с классом CattleCurrencyBox, получить все его дочерние элементы (CattleCurrency) и уже с учетом атрибута name составить таблицу, где строками будут элементы с классом CattleCurrency.

Единственный нюанс – это необходимость преобразовать обычную html-страницу в структуру, поддерживающую DOM-модель (граф). К счастью, нет необходимости писать код для этой задачи: для этого и многого другого существует множество библиотек практически на каждом языке программирования, который обеспечивает работу с HTTP протоколом.

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

 

На Java: библиотека Jsoup - предназначена для разбора html-страниц (парсинг), позволяет извлечь необходимые данные, используя DOM, CSS и методы в стиле jQuery.

Библиотека поддерживает спецификации HTML5 и позволяет с высокой скоростью парсить страницы, как это делают современные браузеры.

Библиотеке может получить html-страницу по URL, из файла или как строку.

 

Основные классы:

Document (можно сравнить с графом – html-страница). Обладает множеством полезных методов: getElementsByClass, getElementsByTag, getElementsByName, getElementById, getElementsByAttributeValue, которые позволяют получать дочерние элементы, удовлетворяющие каким-либо условиям.

Element (можно сравнить с элементом графа-тег). К выше написанному можно добавить весьма полезный метод attr, который получает значение конкретного атрибута тега.

 

На С#: Html Agility Pack – библиотека для разбора html-страниц. По своему механизму практически идентична Jsoup. Только вместо Document - HtmlWeb, вместо Element – HtmlNode, атрибут получается не в виде строки, а специальным классом HtmlAttribute, а для хранения списков элементов используется специальный класс HtmlNodeCollection. А базируется на той-же идее: получение списка дочерних элементов, удоволетворяющих каким-либо условиям.

 

На PHP: PHP Simple HTML DOM Parser – простая библиотека для парсинга, при помощи которого выполнять поиск нужных элементов на html-странице гораздо легче чем с другими подобными библиотеками, но, как часто бывает, в погоне за простотой его использования, он проигрывает в скорости. Зато она способна находить элементы соответствующие нескольким условиям (запросам), для этого существует функция find, её пример:

$html->find(‘div. CattleCurrency div') – найдет все элементы div, являющиеся дочерними элемента div класса CattleCurrency.

 


 

Список используемой литературы:

 

1. Всё о парсинге // http://tceburashka.com/

2. Синтаксический анализ // https://ru.wikipedia.org/wiki/Синтаксический_анализ

3. Официальный сайт библиотеки Jsoup // https://jsoup.org/

4. Html Agility Pack - удобный.NET парсер HTML // https://habrahabr.ru/post/112325/

5. Парсинг сайтов с помощью PHP Simple HTML DOM Parser // https://web2033.com/parsing-php-simple-html-dom/

 

 



<== предыдущая лекция | следующая лекция ==>
Символы студенческого отряда | Глава 2. Патрульно-постовая служба милиции
Поделиться с друзьями:


Дата добавления: 2017-01-21; Мы поможем в написании ваших работ!; просмотров: 1170 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Лучшая месть – огромный успех. © Фрэнк Синатра
==> читать все изречения...

2261 - | 2147 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.015 с.