ГЛАВА I. Анализ информационных источников
В бакалаврской работе описывается процесс разработки и использования программных средств для автоматизированного сбора информации для анализа макроэкономических показателей. Сбор макроэкономических данных производился с информационного ресурса «Мировая и региональная статистика, национальные данные, карты и рейтинги» (https://knoema.ru).
Анализ информационных ресурсов необходим, в первую очередь, для определения их назначения и целей. Важным этапом анализа информационных источников является изучение правового поля, позволяющего или запрещающего осуществлять автоматизированный сбор информации. Далее следует выявление объектов интереса и составление будущей модели данных для автоматизированного сбора информации. Изучение Интернет-ресурсов также необходимо для получения информации о зависимостях, которые будут использоваться в будущем ПО.
I.I. Назначение и цели
Knoema Corporation – это частная компания в области обработки данных, базирующаяся в Нью-Йорке, основанная в 2014 году и основанная в 2011 году. Компания внедряет решения для управления знаниями по всему миру в различных отраслевых вертикалях. В компании работает глобальная команда инженеров по обработке данных, экономистов и разработчиков с американскими сотрудниками в Нью-Йорке и Вашингтоне, округ Колумбия.
Knoema управляет открытой платформой через свой веб-сайт Knoema.com, предлагая доступ к ресурсам визуализации данных для более чем 3,9 миллиардов временных рядов из более чем 1500 источников, которые обычно используются в открытой прессе и других публикациях по всему миру и упоминаются в агрегаторе данных и научных библиотеках.
Заявленная цель Knoema состоит в том, чтобы позволить пользователям находить данные автономно и завершить поиск данных по ссылкам; принимать, преобразовывать, агрегировать, обогащать и помечать данные; управлять конвейерами данных, правами и поставщиками на одной платформе; создавать и публиковать визуализации; и получить доступ к данным в выбранной ими системе. Их продукты варьируются от порталов под индивидуальным брендом до бесшовной интеграции с Excel, Python и т.д.
I.II. Исследование правового поля
Правовое поле Российской Федерации не предусматривает наказания за сбор подобной информации, так как собираемая информация не имеет отношение к частной жизни какого-либо лица в соответствии со Статьей 137 УК РФ.
Однако в web-пространстве существует документ «Стандарт исключений для роботов» (robots.txt), который представляет собой файл ограничения доступа роботам к содержимому на http-сервере. Файл должен находиться в корне сайта (то есть иметь путь относительно имени сайта /robots.txt). Несоблюдение данного стандарта не несет какой-либо ответственности, но содержимое файла robots.txt регламентирует предрасположенность ресурса к агентному воздействию.
Файл robots.txt располагает информацией о правах доступа к разделу информационного ресурса для того или иного робота.
Для проверки прав доступа к информационному ресурсу «Мировая и региональная статистика, национальные данные, карты и рейтинги» (https://knoema.ru) необходимо ввести в адресную строку /robots.txt после имени сайта: https://knoema.ru/robots.txt (см. рис. 1).
Рисунок 1. Проверка информационного ресурса «Мировая и региональная статистика, национальные данные, карты и рейтинги» (https://knoema.ru)
Исходя из полученной информации можно сделать вывод, что данный ресурс запрещают автоматизированный сбор информации только с нескольких разделов, которые не входят в перечень исследуемых объектов интереса.
I.III. Перечень объектов интереса
Система сбора данных, разрабатываемая в рамках данной бакалаврской работы, предназначена для дальнейшего анализа макроэкономических показателей. Соответственно, объектами интереса выступают показатели макроэкономики России.
Макроэкономические показатели – сводные, усредненные по экономике в целом показатели объемов производства и потребления, доходов и расходов, структуры, эффективности, уровня благосостояния, экспорта и импорта, темпов экономического роста и пр., отражающие общие тенденции в экономике и характеризующие ее развитие. Основываясь на их значения, аналитики прогнозируют тенденции движения цен.
Основными макроэкономическими показателями являются:
1. Валовый внутренний продукт (ВВП) (млрд $ США)
ВВП – это сумма добавленной стоимости в валовом исчислении по всем внутренним производителям, плюс любые налоги на продукцию, минут субсидии, не включенные в стоимость продукции товаров, плюс чистые поступления первичного дохода (заработная плата сотрудников и доходы от собственности) из-за границы.
2. Темп прироста ВВП в постоянных ценах (% в год)
Годовой процентный рост ВВП в рыночных ценах на основе постоянной местной валюты. Агрегаты основываются на постоянных долларах США.
3. Валовой национальный доход (ВНД) ($ США)
ВНД – это ВВП за вычетом чистых налогов на производство и импорт, за вычетом заработной платы сотрудникам и дохода от собственности, уплачиваемой остальным странам (другими словами, ВВП минус первичные доходы, уплачиваемые нерезидентам, плюс первичные доходы, получаемые от нерезидентов). Альтернативный подход к оценке ВНД по рыночным ценам – это использование совокупной величины балансов валовых первичных доходов по всем секторам; (валовой национальный доход идентичен валовому национальному продукту (ВНП), что раньше использовалось в национальных счетах).
4. Темп прироста ВНД (% в год)
ВНД (ранее ВНП) – это сумма добавленной стоимости всех производителей-резидентов и всех налогов на продукты (за вычетом субсидий), не включенных в стоимость продукции, плюс чистые поступления первичного дохода (оплата труда работников и доходы от собственности) из-за рубежа.
5. Инфляция, измеряемая индексом потребительских цен (ИПЦ) (% к соответствующему периоду предыдущего года)
Инфляция, измеряемая индексом потребительских цен, отражает годовое процентное изменение стоимости средней потребительской корзины товаров и услуг, которая может быть зафиксирована или изменена в определенные интервалы времени, например, ежегодно.
6. Уровень безработицы (%)
Уровень безработицы может быть определен по национальной мере, по унифицированной мере Международной организации труда (МОТ) или по унифицированной мере организация экономического сотрудничества и развития (ОЭСР). Унифицированная мера безработицы ОЭСР показывает число безработных в процентах от рабочей силы (общее количество занятых людей плюс безработные). Согласно определению Международной организации труда, «безработные» – это те, кто в настоящее время не работает, но готовы и способны работать за зарплату и активно ищут работу.
7. Валовый государственный долг (млрд., в национальной валюте)
Валовая сумма долга складывается из всех обязательств, которые требуют выплаты процентов и/или основного долга должником кредитору в определенные даты в будущем. Сумма включает в себя долговые обязательства в форме специальных прав заимствования, валюту и депозиты, долговые ценные бумаги, кредиты, страхование, пенсионные программы, программы стандартных гарантий и прочую кредиторскую задолженность. Таким образом, все обязательства в системе руководства по статистике государственных финансов (РСГФ) 2001 года [2] – это задолженности, за исключением акционерного капитала, акций инвестиционных фондов, производных финансовых инструментов и фондовых опционов служащих. Долг может быть оценен в текущих рыночных и номинальных ценах (РСГФ 2001, пункт 7.110).
8. Прямые иностранные инвестиции, в текущих ценах ($ США)
Прямые иностранные инвестиции – это чистые притоки инвестиций для приобретения устойчивой доли в управлении (10% или более голосующих акций) предприятием. Это сумма собственного капитала, реинвестированного дохода, другого долгосрочного капитала и краткосрочного капитала, что показано в платежном балансе. Эти данные показывают чистый приток прямых иностранных инвестиций в рассматриваемую экономику из иностранных источников за вычетом чистого притока прямых иностранных инвестиций из рассматриваемой экономики в остальные страны.
9. Экспорт товаров и услуг ($ США)
Экспорт товаров и услуг состоит из продаж, бартера, подарков и грантов, и услуг от резидентов нерезидентам. Обработка экспорта и импорта в системе национальных счетов (СНС) обычно совпадает с показателем в счетах платежного баланса, что описано в Руководстве по платежному балансу [3].
10. Импорт товаров и услуг ($ США)
Импорт товаров и услуг состоит из покупок, бартера, или получений подарков или грантов резидентами от нерезидентов. Учет экспорта и импорта в системе национальных счетов, как правило, идентичен учету в платежном балансе, что описано в Руководстве по платежному балансу [3].
11. Сальдо платежного баланса по текущим операциям, в текущих ценах ($ США)
Сальдо – это как разница между экспортом и импортом. Баланс счета текущих операций – сумма чистого экспорта товаров и услуг, чистый доход, чистые текущие трансферты.
12. Дефлятор ВВП (индекс)
Неявный дефлятор ВВП – это отношение ВВП в текущей местной валюте к ВВП в постоянной местной валюте. Инфляция, измеряемая ежегодным ростом неявного дефлятора ВВП, показывает скорость изменения цен в экономике в целом.
13. Уровень бедности (%)
Население с доходом ниже 1,90 доллара в день - это процент населения, живущего менее чем на 1,90 доллара в день по международным ценам 2011 года.
14. Международные резервы ($ США)
Согласно определению Международного валютного фонда (МВФ), международные резервы состоят из средств в иностранной валюте, резервной позиции в МВФ, запасов монетарного золота и специальных прав заимствования (СПР) путем монетарных властей.
Таким образом, на основании анализа макроэкономических показателей выявлено 14 основных индикаторов, представляющих интерес, которые будут использованы в данной работе.
?
I.IV. Инструментарий для автоматизированного сбора данных с информационных источников
Программное обеспечение, разрабатываемое для автоматизированного сбора данных с информационных источников, реализуется в интегрированной среде разработки PyCharm Community. Язык программирования, на котором реализуется ПО – Python 3. Python – это высокоуровневый язык программирования, отличающийся своей лаконичностью и достаточно большим набором уже разработанных модулей, которые необходимы для функционирования реализуемого ПО.
Сбор информации с информационных ресурсов заключается в получении гипертекстовых документов в формате HTML по протоколу HTTP /HTTPS и дальнейшее вычленение необходимых данных из полученных документов. Поэтому для разработки ПО необходимы модули, которые позволяют обращаться к информационному ресурсу по протоколу HTTP/HTTPS и распознавать содержимое HTML-документа .
HTTP – это протокол передачи гипертекста, протокол HTTPS дополнительно поддерживает алгоритм шифрования передаваемых данных. Основой HTTP является технология «клиент-сервер», где клиент – потребитель, который инициируют соединение и посылает запрос; сервер – поставщик, который ожидает соединение для получения запроса, производит необходимые действия и возвращает результат.
Для реализации программного обеспеченного для автоматизированного сбора данных используются описанные далее модули.
I.IV.I. Библиотека requests
Библиотека requests предоставляет возможность управления HTTP-запросами при помощи языка Python. Инструментарий библиотеки широкий и рассчитан на все случаи взаимодействия с web-приложениями. Код, написанный с применением requests, не является громоздким, легко читается, а функции и методы наглядно настраиваются под специфические нужды.
Установка модуля requests в среде разработки PyCharm Community производится путем установки пакета из настроек проекта (File -> Settings -> Prolect: ‘имя_проекта’ -> Python Interpreter -> + -> requests) (см. рис. 2).
Рисунок 2. Установка пакета requests
После установки пакета Requests его можно использовать в программе. Импорт модуля requests выглядит следующим образом:
import requests
Методы HTTP, такие как GET и POST, определяют, какое действие планируется осуществить при выполнении запроса HTTP. GET на сегодняшний день является наиболее часто используемым методом HTTP. Мы можем использовать запрос GET для извлечения данных из указанного ресурса. Чтобы выполнить GET-запрос, следует вызвать команду requests.get(). GET-запрос, отправленный к ресурсу с URL https://knoema.ru/ выглядит следующим образом:
requests.get('https://knoema.ru')
Response – это объект для проверки результатов запроса. Для изучения атрибутов и поведения запроса GET можно сохранить его в переменную.
response = requests.get('https://knoema.ru')
В данном коде происходит захват возвращаемого значения, которое является экземпляром Response, и сохранение полученного значения в переменной с именем response. Название переменной может быть любым.
Первым битом информации, которую можно получить из запроса, является код состояния. Код состояния предоставляет информацию о статусе запроса. Используя атрибут status_code можно увидеть код состояния, который вернул сервер (см. рис. 3).
Если переменная response возвращает класс Response модуля requests со значением атрибута status_code 200, то это означает, что запрос выполнен успешно. Также могут быть возвращены коды следующих классов:
1. Информационные – начинаются с цифры 1.
2. Успешно – начинаются с цифры 2.
3. Перенаправление – начинается с цифры 3.
4. Ошибка клиента – начинается с цифры 4.
5. Ошибка сервера – начинается с цифры 5.
Рисунок 3. Код ответа, полученный при выполнении GET-запроса
Код статуса 200 означает, что запрос выполнен успешно (см. рис. 3).
Помимо проверки статуса запроса, также необходимо проверить содержимое HTML-документа, т.к. запрос может быть осуществлен успешно, однако содержимое документа может отличаться от предполагаемого. Получение содержимого HTML-документа из запроса осуществляется командой response.text (см. рис. 4). Атрибут response.text возвращает содержимое ответа сервера в юникоде, что, в свою очередь, относится к контенту двоичного ответа. Запросы Python используются для получения содержимого из определенного URI ресурса. Каждый раз при выполнении запроса к указанному URI через Python, возвращается объект ответа. Объект ответа будет используется для доступа к определенным функциям, таким как контент, заголовки и т.д.
Рисунок 4. Содержимое HTML-документа, полученное при выполнении GET-запроса
Сравнив результат выполненного запроса с содержимым HTML-документа страницы https://knoema.ru/atlas/Российская-Федерация/ВВП, можно сделать вывод о том, что содержимое HTML-документа располагает необходимыми данными для этапа осуществления алгоритма сбора информации.
I.IV.II. Библиотека lxml
Lxml – это библиотека, которая позволяет легко обрабатывать XML - и HTML-файлы, а также используется для парсинга веб-страниц. Существует множество готовых парсеров XML/HTML, но для получения лучших результатов или при определенных задачах разработчики вынуждены писать свои собственные парсеры. В этой ситуации возникает необходимость в lxml-библиотеке. Ключевые преимущества этой библиотеки заключаются в том, что она проста в использовании, чрезвычайно быстра при анализе больших документов, очень хорошо документирована и обеспечивает простое преобразование исходных данных в типы данных Python, что упрощает манипулирование файлами [4].
Установка модуля lxml в среде разработки PyCharm Community производится путем установки пакета из настроек проекта (File -> Settings -> Prolect: ‘имя_проекта’ -> Python Interpreter -> + -> lxml) (см. рис. 5).
Рисунок 5. Установка пакета lxml
Начиная с версии 2.0 lxml поставляется со специальным пакетом Python для работы с HTML – lxml.html. Он основан на анализаторе HTML lxml, но предоставляет специальный API для элементов HTML, а также ряд утилит для общих задач обработки HTML [5].
Чтобы иметь возможность использовать библиотеку lxml в программе, сначала нужно ее импортировать. Это можно сделать с помощью следующей команды:
from lxml.html import fromstring
Данная строка импортирует функцию fromstring из модуля lxml.htmll. Функция fromstring преобразует HTML-код документа в виде текста в объект класса lxml.html.HtmlElement, который представляет исходный текст в виде дерева и позволяет применять запросы XPath (см. рис. 6).
Рисунок 6. Преобразование HTML-кода документа в виде текста в объект класса lxml.html.HtmlElement
I.IV.III. Язык запросов XPath
XPath (XML Path Language) – это язык запросов к элементам XML-документа. Его применение довольно широко: от парсинга документов XML-формата (в том числе web-страниц html) до автоматизации тестирования сайтов и мобильных приложений. XPath является одним из основных элементов в стандарте XSLT консорциума W3C .
Также как SQL , XPath является декларативным языком запросов. Чтобы получить интересующие данные, необходимо создать запрос, описывающий эти данные. Основные действия автоматически выполняются интерпретатором языка XPath.
Документ XML рассматривается, как дерево узлов. Чтобы выбрать узлы или наборы узлов в XML-документе, XPath использует выражения пути. Такие выражения очень похожи на выражения пути, которые используются в традиционных файловых системах.
Чтобы выбрать узлы в XML-документе, XPath использует выражения пути. Узел выбирается, следуя по заданному пути. Наиболее полезные выражения пути представлены в таблице 1.
Таблица 1. Выражения пути в XPath-запросе
Выражение Результат
имя_узла Выбирает все узлы с именем «имя_узла»
/ Выбирает от корневого узла
// Выбирает узлы от текущего узла, соответствующего выбору, независимо от их местонахождения
. Выбирает текущий узел
.. Выбирает родителя текущего узла
@ Выбирает атрибуты
Структура XPath-запроса подробно описана в подглаве I.V «Анализ структуры исходных информационных источников».
I.IV.IV. Библиотека csv
Библиотека csv является основным модулем для работы с csv -файлами в Python. Формат csv является одним из распространенных файловых форматов, которые хранят в информацию в удобном виде. Каждая строка в файле csv представляет отдельную запись или строку, которая состоит из отдельных столбцов, разделенных запятыми. Для организации работы с форматом csv Python предоставляет специальный модуль csv.
Модуль csv является встроенным, поэтому он не требует установки, достаточно использовать обычный импорт:
import csv
Преимущество формата csv заключается в том, что данный формат позволяет структурировать большие объемы данных. Данные в формате csv можно легко экспортировать в электронные таблицы или базы данных. Возможно расширение csv-документа путем добавления новых строк.
Таким образом, инструментарий для автоматизированного сбора данных с информационных источников состоит из следующих программных модулей языка программирования Python 3:
1. Библиотека requests – осуществление HTTP/HTTPS запросов к информационному ресурсу;
2. Библиотека lxml – осуществление чтения HTML-документов и вычленение объектов интереса;
3. Язык запросов XPath – определение шаблона для выбора набора узлов;
4. Библиотека csv – структурирование собранных данных и запись их в csv-файл.
Результатом изучения инструментария для автоматизированного сбора данных с информационных является список используемых программных модулей и тестирование отдельных частей алгоритма, задействующих данные модули. Дальнейшая работа создания ПО для автоматизированного сбора информации заключается в описании и создании алгоритма сбора информации.
?
I.V. Анализ структуры исходных информационных источников
Для организации системы сбора данных для анализа макроэкономических показателей необходимо проанализировать структуру исходных информационных источников с целью выявления объектов интереса и создания алгоритма доступа к последним для последующего их извлечения.
Информационный ресурс «Мировая и региональная статистика, национальные данные, карты и рейтинги» (https://knoema.ru) предоставляет доступ к крупному мировому каталогу публичных данных. Информация представлена для каждой страны по отраслям. Используя данный ресурс, можно получить доступ к статистике по таким отраслям, как экономика, энергетика, транспорт, телекоммуникации, оборона, внешняя торговля, туризм, окружающая среда, мировые рейтинги, демография, земельные ресурсы, сельское хозяйство, здравоохранение, образование, преступность, бедность, продовольственная безопасность, водные ресурсы, исследования и разработки и другие.
В рамках бакалаврской работы объектами интереса для автоматизированного сбора данных представляются макроэкономические показатели России, соответственно, на ресурсе https://knoema.ru релевантными являются данные, представленные в разделе «Экономика» Российской Федерации. Макроэкономические показатели, представляющие интерес для исследования, описаны в подглаве I.III «Перечень объектов интереса» данной работы.