Сбор данных в Интернете на языке R
Покупка
Издательство:
ДМК Пресс
Автор:
Храмов Дмитрий Александрович
Год издания: 2017
Кол-во страниц: 280
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-97060-459-5
Артикул: 712482.01.99
Доступ онлайн
В корзину
Всё, что регистрирует человек и созданные им машины, может считаться данными. Фиксируя новое и переводя архивы в цифровую форму, мы с каждым днём производим всё больше данных. Но гораздо чаще случается так, что данные разбросаны по всемирной сети на многочисленных страницах онлайновых магазинов, заметках в социальных сетях, логах серверов и т. п. Прежде чем начать работать с такими данными, их необходимо собрать и сохранить в пригодном для анализа виде. Решению этих вопросов и посвящена данная книга. Основной материал книги разделён на две части. В первой части дано краткое введение в R - описание среды разработки, языка и основных пакетов-расширений. Вторая часть посвящена непосредственно сбору данных: работе с открытыми данными, извлечению данных из веб-страниц и из социальных сетей. Также рассмотрены необходимые технические вопросы: протокол HTTP, функции импорта данных различных форматов и регулярные выражения. Завершается рассказ созданием карт на основе собранных данных.
Издание предназначено специалистам по анализу данных, а также программистам, интересующихся сбором данных в Интернете.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов.
Для полноценной работы с документом, пожалуйста, перейдите в
ридер.
Сбор данных в Интернете на языке 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 Мы используем термины «скрипт» и «программа» как синонимы.
Доступ онлайн
В корзину