Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Сбор данных в Интернете на языке R

Покупка
Артикул: 712482.01.99
Доступ онлайн
649 ₽
В корзину
Всё, что регистрирует человек и созданные им машины, может считаться данными. Фиксируя новое и переводя архивы в цифровую форму, мы с каждым днём производим всё больше данных. Но гораздо чаще случается так, что данные разбросаны по всемирной сети на многочисленных страницах онлайновых магазинов, заметках в социальных сетях, логах серверов и т. п. Прежде чем начать работать с такими данными, их необходимо собрать и сохранить в пригодном для анализа виде. Решению этих вопросов и посвящена данная книга. Основной материал книги разделён на две части. В первой части дано краткое введение в R - описание среды разработки, языка и основных пакетов-расширений. Вторая часть посвящена непосредственно сбору данных: работе с открытыми данными, извлечению данных из веб-страниц и из социальных сетей. Также рассмотрены необходимые технические вопросы: протокол HTTP, функции импорта данных различных форматов и регулярные выражения. Завершается рассказ созданием карт на основе собранных данных. Издание предназначено специалистам по анализу данных, а также программистам, интересующихся сбором данных в Интернете.
Храмов, Д.А. Сбор данных в Интернете на языке R / Д. А. Храмов. - Москва : ДМК Пресс, 2017. - 280 с. - ISBN 978-5-97060-459-5. - Текст : электронный. - URL: https://znanium.com/catalog/product/1028129 (дата обращения: 17.05.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Сбор данных в Интернете         

на языке R

Москва, 2017

Дмитрий Храмов

УДК 004.738.5:004.438R
ББК 32.971.353

 
Х89

Храмов Д. А.

Х89 Сбор данных в Интернете на языке R.  – М.: ДМК Пресс, 2017. – 280 

с.: ил. 

 
ISBN 978-5-97060-459-5

Всё, что регистрирует человек и созданные им машины, может 

считаться данными. Фиксируя новое и переводя архивы в цифровую форму, мы с каждым днём производим всё больше данных. Но 
гораздо чаще случается так, что данные разбросаны по всемирной 
сети на многочисленных страницах онлайновых магазинов, заметках в социальных сетях, логах серверов и т. п. Прежде чем начать 
работать с такими данными, их необходимо собрать и сохранить в 
пригодном для анализа виде. Решению этих вопросов и посвящена 
данная книга.

Основной материал книги разделён на две части. В первой части 

дано краткое введение в R – описание среды разработки, языка и 
основных пакетов-расширений. Вторая часть посвящена непосредственно сбору данных: работе с открытыми данными, извлечению 
данных из веб-страниц и из социальных сетей. Также рассмотрены необходимые технические вопросы: протокол HTTP, функции 
импорта данных различных форматов и регулярные выражения. 
Завершается рассказ созданием карт на основе собранных данных.

Издание предназначено специалистам по анализу данных, а так
же программистам, интересующихся сбором данных в Интернете. 

УДК 004.738.5:004.438R

ББК 32.971.353

                                                             © Храмов Д.А., 2016
ISBN 978-5-97060-459-5                     © Оформление, издание, ДМК Пресс, 2017

Содержание

Введение ............................................................................ 11

Кто и зачем собирает данные...................................................... 11
Почему R? ............................................................................ 12
Как устроена эта книга ............................................................. 13
Обратная связь ...................................................................... 13

ЧАСТЬ I. ПРОГРАММИРОВАНИЕ НА R ..................................... 14

Глава 1. Знакомство с R ........................................................ 15

Установка ............................................................................. 15
Работа в среде RGui ................................................................ 17
Справка ............................................................................... 22

Глава 2. Скаляры, векторы и матрицы ..................................... 24

Арифметические операции и присваивание ................................... 24
Имена ................................................................................. 25
Простые типы данных.............................................................. 26

Числа .............................................................................. 26
Символьный тип................................................................. 28
Логический тип .................................................................. 30

Векторы ............................................................................... 31
Векторизация и логическая индексация........................................ 36
Матрицы и массивы ................................................................ 39
Резюме ................................................................................ 41

Глава 3. Списки и таблицы .................................................... 42

Списки ................................................................................ 42
Таблицы............................................................................... 45
Функции, применяемые к составным данным................................. 50

apply................................................................................ 50
lapply............................................................................... 51
sapply............................................................................... 52
do.call .............................................................................. 53

Резюме ................................................................................ 53

Глава 4. Управление процессом вычислений ........................... 54

Циклы ................................................................................. 54

Цикл со счётчиком .............................................................. 54
Цикл с предусловием ........................................................... 57

Условные операторы................................................................ 58
Резюме ................................................................................ 59

❖
Содержание

Глава 5. Базовая графика ..................................................... 60

Функции низкого и высокого уровней.......................................... 60
Глобальные и локальные параметры графиков................................ 65
Легенда................................................................................ 67
Комбинации графиков ............................................................. 67
Графики функций ................................................................... 69
Экспорт в файлы .................................................................... 70
Резюме и ссылки .................................................................... 70

Глава 6. Функции................................................................. 72

Создание функций.................................................................. 72
Локальные и глобальные переменные. Области видимости ................ 74
Диагностические сообщения...................................................... 76
Функции в качестве аргументов ................................................. 76
Функциональное программирование ........................................... 78
Резюме ................................................................................ 79

Глава 7. Факторы и даты....................................................... 80

Категориальные данные ........................................................... 80
Дата и время ......................................................................... 83
Резюме ................................................................................ 86

Глава 8. Пакеты ................................................................... 87

Установка и загрузка ............................................................... 87
Выбор пакета......................................................................... 89
Справка и её разновидности ...................................................... 89
Как самому создать пакет R?...................................................... 91
Пакет magrittr: конвейер операций .............................................. 92

Глава 9. Ввод и вывод данных. Работа с файлами .................... 94

Рабочий каталог пользователя ................................................... 94
Запись данных в стандартное устройство вывода............................. 94
Запись в текстовые файлы ........................................................ 95

Таблицы ........................................................................... 95
Строки............................................................................. 97
Матрицы .......................................................................... 97

Чтение из текстовых файлов...................................................... 97

Элементы данных: scan ......................................................... 97
Строки: readLines................................................................ 99
Таблицы ........................................................................... 100

Содержание ❖
5

Работа с данными в бинарном формате......................................... 101
Управление файлами и каталогами.............................................. 102
Взаимодействие с базами данных................................................ 103

DBI + RSQLite ................................................................... 103
sqldf................................................................................. 103

Резюме ................................................................................ 104

Ссылки к части I ................................................................... 105

ЧАСТЬ II. СБОР ДАННЫХ....................................................... 106

Глава 10. Открытые данные................................................... 107

Что это такое?........................................................................ 107
Данные Всемирного банка......................................................... 108
Где взять данные? ................................................................... 113
Резюме ................................................................................ 114

Глава 11. Протокол HTTP....................................................... 115

Основные понятия.................................................................. 115
Запрос ................................................................................. 116
Ответ .................................................................................. 117
Коды состояния ..................................................................... 118
Передача параметров ............................................................... 119
HTTP в R ............................................................................. 120

Пакет httr ......................................................................... 120
Пакет RCurl ...................................................................... 122

Кириллица и кодирование URL.................................................. 123
Пример: геокодирование с помощью Google Maps Geocoding .............. 124
Пример: доступ к API портала открытых данных РФ ....................... 126
Ссылки................................................................................ 129

Глава 12. Импорт данных ...................................................... 130

Чтение файлов....................................................................... 130
Скачивание........................................................................... 131
Excel ................................................................................... 132
JSON................................................................................... 133
Пример: какой из JSON-пакетов самый популярный?....................... 133
Google Spreadsheets ................................................................. 136
Архивы ................................................................................ 137
Завершающий штрих: проверка типа данных.................................. 138
Ссылки................................................................................ 139

❖
Содержание

Глава 13. Веб-скрапинг ......................................................... 140

Используйте структуру данных .................................................. 140
Элементы HTML и CSS ........................................................... 143

div и span .......................................................................... 143
Классы и идентификаторы .................................................... 144

Путь к элементу ..................................................................... 146

XPath............................................................................... 146
CSS ................................................................................. 149

Как найти путь к элементу при помощи браузера ............................ 150
Проверка и упрощение пути. Консоль разработчика......................... 153
Резюме ................................................................................ 155
Лирическое отступление: построение графов ................................. 155
Ссылки................................................................................ 157

Поиск в Интернете .............................................................. 157
HTML и CSS:..................................................................... 158
XPath............................................................................... 158

Глава 14. Пакет rvest ............................................................ 159

Пакеты для веб-скрапинга......................................................... 159
Получение и обработка HTML-документа..................................... 160
Поиск элемента...................................................................... 162
Разбор элемента ..................................................................... 164

Пример: получаем ссылку и скачиваем файл .............................. 165

Таблицы............................................................................... 166

Пример: извлечение таблицы из Википедии ............................... 166

Пример: разбор страницы сериала «Светлячок» .............................. 167
Пример: извлечение данных об инвестиционных фондах................... 169
Работа с формами. Сессии......................................................... 171

Пример: аутентификация на форуме ........................................ 173

Функции навигации ................................................................ 174
Работа с кодировками .............................................................. 175
Заключительные замечания и ссылки .......................................... 175

Глава 15. RSelenium: управляем браузером.............................. 177

Пример: перевод с помощью Yandex.Translate................................. 179
Пример: динамически генерируемая ссылка на файл ........................ 180
Selenium и браузеры ................................................................ 183
Резюме и ссылки .................................................................... 183

Содержание ❖
7

Глава 16. PhantomJS и обработка динамических веб-страниц..... 185

Динамические страницы: описание проблемы ................................ 185
Установка ............................................................................. 186
Запуск ................................................................................. 186
Пример: рендеринг веб-страницы................................................ 187
Сохранение веб-страницы в файл................................................ 188
Резюме и ссылки .................................................................... 190

Глава 17. Facebook............................................................... 192

Протокол авторизации OAuth 2.0................................................ 192
Получение маркера доступа пользователя API Graph ....................... 193
Доступ к данным с помощью rvest и jsonlite ................................... 196
Пакет Rfacebook и создание приложения....................................... 198

Глава 18. Сбор информации с помощью API ВКонтакте............. 204

Создание приложения.............................................................. 204

Регистрация приложения ...................................................... 204
Получение кода доступа........................................................ 206

Получение данных .................................................................. 207

Реализация в R................................................................... 208

Построение графа связей .......................................................... 210
Получение другой информации из сети ........................................ 212

Поиск пользователя............................................................. 213

Ограничения ......................................................................... 214

Глава 19. Использование Twitter API ....................................... 215

Получение доступа к Twitter API ................................................ 215
Подключение к Twitter из R....................................................... 215
Поиск и сохранение его результатов в базе данных........................... 217
Фильтрация результатов поиска ................................................. 218
Построение облака слов ........................................................... 219

Данные для анализа............................................................. 220
Лексический корпус и терм-документная матрица ....................... 220
Ключевые слова и их частоты................................................. 221
Облако слов ...................................................................... 221

Ограничения Search API........................................................... 223
Streaming API........................................................................ 223
Ссылки................................................................................ 223

❖
Содержание

Глава 20. Регулярные выражения........................................... 225

Символы и метасимволы .......................................................... 225
Квантификаторы .................................................................... 227
Положение образца внутри строки .............................................. 228
Операторы............................................................................ 229
«Жадность» и «лень» квантификаторов........................................ 230
Классы символов.................................................................... 232
Заключительные замечания....................................................... 233
Ссылки................................................................................ 234

Глава 21. Создание карт на основе собранных данных.............. 235

Интерактивные карты в leaflet.................................................... 235
Переходим к созданию карты..................................................... 239
Извлечение адресов и названий магазинов .................................... 240
Геокодирование...................................................................... 242
Отображение на карте.............................................................. 243
Работа с шейп-файлами............................................................ 244
Ссылки................................................................................ 247

Ссылки к части II .................................................................. 249

Приложение А. Среда разработки RStudio ............................... 250

Создание скрипта ................................................................... 251
Автодополнение имён объектов .................................................. 252
Выполнение .......................................................................... 252
Рабочее пространство .............................................................. 253
История команд ..................................................................... 254
Сохранение файлов................................................................. 256
Кодировки файлов.................................................................. 256
Управление файлами в рабочем каталоге....................................... 257
Управление пакетами............................................................... 257
Поиск и замена ...................................................................... 258
Автоматическое создание функций.............................................. 259
Комментирование................................................................... 260
Переход к определению функции................................................ 260
Ссылки................................................................................ 261

Приложение Б. Языки поисковых запросов Google и Яндекс...... 262

Почему важно уметь пользоваться ЯПЗ........................................ 263
Предотвращение перегрузок сервиса............................................ 263

Содержание ❖
9

Приложение В. Введение в HTML и CSS................................... 264

Веб-страница......................................................................... 264
Гиперссылки ......................................................................... 266
Шрифт ................................................................................ 267
Цвет.................................................................................... 268
Стиль .................................................................................. 268
Выравнивание ....................................................................... 270
Рисунки ............................................................................... 270
Списки ................................................................................ 271

Маркированные.................................................................. 271
Нумерованные ................................................................... 271
Вложенные........................................................................ 272

Таблицы............................................................................... 272
Ссылки................................................................................ 273

Приложение Г. Регулярные выражения ................................... 274

Предметный указатель.......................................................... 276

Введение

Всё, что регистрирует человек и созданные им машины, может считаться
данными. Фиксируя новое и переводя архивы в цифровую форму, мы с каждым днём производим всё больше данных. Часть из них собрана в специальных хранилищах. Например, UN Comtrade содержит официальную статистику по международной торговле. Использовать такие данные довольно
легко, достаточно лишь получить доступ к их хранилищу.
Но гораздо чаще случается так, что данные разбросаны по всему Интернету на многочисленных страницах онлайновых магазинов, заметках в социальных сетях, логах серверов и т. п. Прежде чем начать работать с такими
данными, их необходимо собрать и сохранить в пригодном для анализа виде.
Решению этих вопросов и посвящена данная книга.

Кто и зачем собирает данные

Круг специалистов, работа которых так или иначе связана со сбором данных,
весьма обширен. Судите сами.
Сбор данных является предварительным этапом в data mining – «интеллектуальном анализе данных» или же «добыче данных». Data mining можно
трактовать весьма широко – как анализ данных вообще, и более узко, как
обнаружение скрытых закономерностей в (больших объемах) данных.
Весьма близко к data mining находится машинное обучение (machine learning). Обе дисциплины пользуются одними и теми же методами, так что чёткой границы между ними провести нельзя. Несколько упрощая, можно сказать, что data mining больше интересуется получением закономерностей, а
машинное обучение – их использованием. Пользуясь собранными данными, машинное обучение решает задачи классификации (например, фильтрации спама или выработки рекомендаций на основе мнений пользователей со
сходными запросами), прогнозирования, кластеризации (например, сегментации рынка), выявления аномальных наблюдений и т. п.
Сбор информации о конкурентах, например мониторинг их ценовых предложений, является одной из задач бизнес-аналитики. Сходные задачи, но несколько в другом контексте, решает open source intelligence – разведка по открытым источникам данных, которая отвечает за поиск, сбор и анализ информации из общедоступных источников. Ещё одна близкая область деятельности – business intelligence. Несмотря на наличие «intelligence» (англ.
”разведка”) в названии, она предполагает не столько слежение за конкурентами, сколько за бизнес-процессами в собственной организации.
В отличие от предыдущих дисциплин, где результатами анализа данных
пользовались лишь отдельные организации, новое направление в журналистике – журналистика данных (data-driven journalism) – проводит свои ис
❖
Содержание

следования в хранилищах данных для информирования публики.
Одним из крупнейших поставщиков общедоступной информации являются социальные сети. В них люди размещают свои анкетные данные, делятся новостями, личными фотографиями, вкусами (лайкая что-нибудь или
вступая в какую-либо группу), кругом своих знакомств. Причём всё это делается по доброй воле, подчас не задумываясь о возможных последствиях.
Поэтому данные из социальных сетей, добываемые с помощью social media
mining, активно используются для проведения социологических и маркетинговых исследований.
Cобранные сведения, имеющие географическую привязку, могут пригодиться в геоинформатике. Если раньше основными источниками данных для
геоинформационных систем (ГИС) являлись наземная съёмка и результаты
дистанционного зондирования Земли, то теперь к ним присоединилась информация, поставляемая многочисленными «людьми-датчиками», отправляющими со своих смартфонов фотографии в Instagram, оставляющих заметки в Facebook, твиты в Twitter и т. п.
К специалистам указанных выше профессий нужно добавить ещё специалистов будущих – студентов, добывающих информацию для своих курсовых
и дипломных работ. Всем им, а также просто любопытствующим эта книга
может оказаться полезной.

Почему R?

Заниматься сбором данных можно и на чистом C. В конце концов, большинство библиотек, использующихся при сборе данных, написано именно на
этом языке. В качестве примера назовём библиотеки libcurl и libxml2. Но…
Если от языка программирования вам хочется большего «дружелюбия»,
то можно использовать Python. В нём существует множество пакетов,
предназначенных как для сбора, так и для анализа данных. Поэтому, рассматривая ту или иную задачу, мы будем ещё не раз упоминать о Python – как об
альтернативном инструменте для её решения.
Но использовать мы будем R. Если Python – это всё-таки язык общего
назначения, снабжённый нужными библиотеками, благодаря чему он способен трансформироваться в инструмент для анализа данных, то пакет R в
буквальном смысле слова создан статистиками и для статистиков. Поэтому
задачи сбора данных в этом языке реализуются наиболее прямолинейно, что
позволяет быстрее добиваться результатов, не отвлекаясь на тонкости программирования.
Но и после того, как данные собраны, пакет R сопровождает пользователя на протяжении всего цикла их анализа – от предварительной обработки
данных до получения окончательных результатов и представления их на гра
Как устроена эта книга ❖
13

фиках – вплоть до оформления текстов статей полиграфического качества.
Кстати, эти строки также набраны в R.

Как устроена эта книга

Основной материал книги разделён на две части. В первой части (к ней относятся главы 1–9) дано краткое введение в R – описание среды разработки,
языка и основных пакетов-расширений.
Вторая часть (главы 10–21) посвящена непосредственно сбору данных: работе с открытыми данными (глава 10), извлечению данных из веб-страниц
(главы 13–16) и из социальных сетей (главы 17–19). Главы 11, 12 и 20 рассматривают необходимые технические вопросы: протокол HTTP, функции
импорта данных различных форматов и регулярные выражения. Завершается рассказ в главе 21 – созданием карт на основе собранных данных.
В конце каждой части приведены ссылки на литературу и веб-ресурсы.
Кроме этого, в приложениях содержится: описание среды разработки RStudio (приложение А), команды поисковых сервисов Google и Яндекс (приложение Б), введение в язык разметки HTML (приложение В) и сводка регулярных выражений (приложение Г).

Обратная связь

Ваши вопросы и конструктивную критику по содержанию книги присылайте по электронному адресу: dkhramov@mail.ru.
Новости, связанные со сбором данных, файлы примеров, список замеченных ошибок, а также ответы на вопросы читателей можно найти на сайте
книги: http://dkhramov.dp.ua/Comp.DataGathering.

ЧастьI

ПРОГРАММИРОВАНИЕ
НА R

Глава1

Знакомство с R

В этой главе мы установим R и научимся пользоваться средой разработки
RGui. По пути решим простую, но весьма распространённую задачу – построим график функции.

Установка

Рассмотрим способ установки R, который подойдёт для любого типа операционных систем, поддерживаемых пакетом: Linux, Mac или Windows. В случае Windows этот путь – единственный, для Linux и Mac проще воспользоваться менеджером пакетов соответствующей системы.

Чтобы установить R, зайдём на его официальный сайт и выберем интересующую версию программы. Сам R, документация к нему и дополнительные
пакеты распространяются через сеть ftp- и веб-серверов, называемую CRAN
(Comprehensive R Archive Network). Поэтому следующим шагом будет выбор одного из более чем шести десятков зеркал CRAN. После этого, указав
тип операционной системы, скачиваем дистрибутив R.

Запустим инсталляционный файл и будем следовать указаниям программы-установщика. Единственный момент, который потребует вашего внимания, – выбор разрядности операционной системы (рис. 1.1).

После установки запустим программу. В Linux и Mac, по умолчанию, R работает в консоли. Кроме того, вместе с пакетом поставляется графический
интерфейс. В Linux он основан на связке Tcl/Tk и запускается командой
R --gui=Tk. В Mac встроенный графический интерфейс для R называется
R.app.

Версия R для Windows поставляется с графической оболочкой RGui
(рис. А.5), которую мы и рассмотрим в дальнейшем.

Заметим, что работа со всеми указанными выше графическими оболочками выглядит примерно одинаково.

❖
Знакомство с R

Рис. 1.1 ❖ Выбор компонентов в ходе установки R под Windows

Рис. 1.2 ❖ Консоль R в графической оболочке RGui (Windows)

Работа в среде RGui ❖
17

Работа в среде RGui

RGui – это стандартная графическая оболочка R под Windows, являющаяся
простейшей средой разработки. Она быстро загружается и достаточно удобна в использовании. В RGui есть три вида окон:

• консоль;
• редактор скриптов;
• окно графического устройства.
Команды R вводятся в консоли (рис. А.5) после приглашения пользователя (значка ’>’) и отправляются на выполнение нажатием Enter.
Управление консолью:
• дополнение команды – Tab;
• перемещение по истории команд – клавиши со стрелками;
• прекращение выполнения команды – Esc;
• переключение в другое окно – Ctrl+Tab;
• очистка консоли – Ctrl+L.
Для создания собственных программ (скриптов)1 удобнее использовать
не консоль, а редактор (рис. 1.3).
Открыть его можно в меню Файл/Новый скрипт. Первое окно открывается с помощью меню, последующие – так же или комбинацией клавиш Ctrl+N.

Рис. 1.3 ❖ Интерфейс редактора кода в RGui

Обратите внимание на то, как изменилась панель инструментов по сравнению с консолью (рис. А.5).
В качестве примера построим график синусоиды:

x <- seq(-pi,pi,.1)
y <- sin(x)
plot(x,y)

В первой строке формируется одномерный массив (вектор) x-координат,
значения которых изменяются от −𝜋 до 𝜋 с шагом 0,1. Этот массив сохраняется в переменной x. Комбинация символов <- обозначает операцию присваивания.

1 Мы используем термины «скрипт» и «программа» как синонимы.

Доступ онлайн
649 ₽
В корзину