Введение 3
1. Выбор стека технологий 7
1.1. Библиотеки Python 7
1.2. Возможности Grab 10
1.3. XPath 13
1.4. База данных SQLite 15
2. Анализ страниц сайтов 17
2.1. Scopus 17
2.2. Web of Science 19
2.3. Веб-сайт КФУ 22
3. Разработка программы 26
3.1. Работа с базой данных 27
3.2. Сбор тестовых данных 29
3.3. Парсер веб-страниц Web of Science 30
3.4. Парсер веб-страниц Scopus 32
3.5. Основной модуль 33
4. Анализ полученных результатов 34
Заключение 43
Список использованных источников 44
Приложение А 45
Приложение Б 48
Приложение В 50
Приложение Г 52
Приложение Д 54
Приложение Е
В современном мире практически любая информация хранится и распространяется во Всемирной паутине (WWW, World Wide Web), и к ней можно получить доступ из любого веб-браузера с помощью Глобальной сети (Интернет). Развитие Интернета и WWW привело к тому, что объём этой информации начал стремительно расти. И сейчас с каждым годом её количество возрастает в разы и даже нет возможности точно измерить эту величину.
Некоторым организациям для повышения эффективности своей деятельности очень важно уметь собирать и анализировать отзывы клиентов в социальных сетях или на сайтах. Необходимость в сборе и анализе большого количества данных имеют поисковые системы (например, Google) для индексации сайтов для более релевантной выдачи в результатах поиска. Образовательным учреждениям и различным формам организаций научных исследований часто требуется проводить оценку результативности научной деятельности своих сотрудников-учёных с помощью наукометрических показателей, одним из которых является индекс Хирша. И такой процесс оценки для огромного числа учёных вручную потребует много времени и сил. Большие массивы данных требуется также для анализа данных, различного рода рейтинговых сайтов, прогнозирования рынка, сбора статистических данных и т.д.
В результате стал возникать вопрос, каким же образом собирать и анализировать те огромные массы данных, которые хранятся в Интернете.
Так или иначе, чтобы собрать необходимую информацию и получить от неё пользу, нужно правильно извлечь, структурировать и собрать данные с веб-сайта. Если человек откроет любой сайт и посмотрит на страницу, то легко увидит текст, который несёт определённый для него смысл
Вот тут речь заходит о таком понятии как Web scraping (далее - веб- скрапинг). Веб-скрапинг - это извлечение данных с веб-сайтов. В основном, этот процесс является автоматизированным, т.е. выполняется программой, и состоит из следующих этапов: загрузка веб-страницы, парсинг документа, сбор данных, анализ результатов.
Основными проблемами, с которыми может столкнуться робот, реализующий процесс веб-скрапинга, являются нечёткая структура вебстраниц и механизм защиты от ботов.
В первом случае это связано с тем, что сайты предназначены для удобного восприятия информации людьми, а не для автоматического сбора данных и поэтому чаще всего такие веб-страницы не удобны для веб-скрапинга.
Во втором случае механизм защиты от ботов может включать в себя подтверждение капчи, аутентификацию пользователя, проверку заголовков запросов, скрытые поля данных в документе, анализ поведения пользователя и блокировка IP адресов. Такие меры предосторожности нужны владельцам сайтов для поддержки стабильного доступа к сайту, так как боты могут выполнять все действия с высокой скоростью, тем самым вызывая серьёзную нагрузку на сайт. Также таким способом могут предотвратить клонирование сайта конкурентами, которые пытаются собрать все данные со всех страниц.
В данной работе будет анализироваться структура веб-страниц сайтов Scopus и Web of Science для извлечения индекса Хирша.
«Scopus - крупнейшая единая база данных, содержащая аннотации и информацию о цитируемости рецензируемой научной литературы» [2].
«Web of Science - поисковая интернет-платформа, объединяющая реферативные базы данных публикаций в научных журналах и патентов, в том числе базы, учитывающие взаимное цитирование публикаций» [3].
«Индекс Хирша является количественной характеристикой продуктивности учёного, группы учёных, научной организации или страны в целом, основанной на количестве публикаций и количестве цитирований этих публикаций» [4].
В области создания программ для извлечения данных с веб-сайтов существует множество решений. Часть из них опирается на идею использования API (Application Programming Interface, интерфейс прикладного программирования), а другие отдают предпочтение специальным инструментам для веб-скрапинга. Рассмотрим достоинства и недостатки каждого подхода.
Преимущество API:
• быстрый ответ
• легальный доступ к ресурсу
• структурированный вид данных (JSON, XML)
• простота использования
• независим от языка и платформы
Недостатки API:
• не все веб-ресурсы имеют API
• часто требуется пройти аутентификацию
• не всегда бесплатно
• не всегда есть доступ ко всей информации
• ограничение числа запросов
• другие ограничения для различных типов аккаунтов
Почти все вышеприведённые недостатки существенны.
Преимущества веб-скрапинга:
• бесплатно
• без ограничений числа запросов
доступ практически в любой уголок сайта
Недостатки веб-скрапинга:
• вероятность блокировки IP адреса
• может потребоваться аутентификация пользователя
• скорость работы зависит от сайта и инструмента
• извлечённые данные нуждаются в обработке
• привязка к языку и платформе
• код программы не всегда простой
Существенными недостатками является первые два пункта.
В существующих работах данной области для извлечения информации из известных наукометрических баз данных используются такие популярные библиотеки Python как Beautiful Soup, Requests, Scrapy и Selenium, особенности и применение которых описал Райан Митчелл в своей книге [1].
В данной же работе, в отличие от других, будет использоваться подход с использованием инструмента для веб-скрапинга Grab, возможности которого будут рассмотрены позже.
Целью работы ставится разработка программы для получения индекса Хирша со страниц Scopus и Web of Science. Для демонстрации работы программа будет обрабатывать данные о сотрудниках Казанского Федерального Университета.
Поставленные задачи:
• Рассмотреть существующие решения
• Проанализировать структуры веб-страниц сайтов
• Разработать программу
• Провести анализ результатов работы программы
В ходе выполнения данной работы были решены все задачи и достигнута поставленная цель, т.е. было разработано программное решение в виде набора скриптов на языке Python для реализации автоматического определения индекса Хирша по страницам Scopus и Web of Science. С помощью этой программы можно собирать данные у учёных об их индексе Хирша, который поможет при оценке их научной продуктивности.
Для демонстрации работы программы в качестве входного набор данных был выбран персонал Казанского Федерального Университета. Информация о каждом сотруднике указана в его профиле на официальном сайте университета и является общедоступной для просмотра.
Полученные выходные данные были проанализированы, и для более наглядного представления результатов работы программы были построены различные диаграммы.