Выбрать главу

 Получить данные с помощью размещенных в сети API, например, с помощью интерфейсов, предоставляемых онлайновыми базами данных и многими современными веб–приложениями (в т. ч. такими, как Twitter, Facebook и многие другие). Это просто фантастический способ получения доступа к государственным или коммерческим данным, а также к данным на сайтах социальных СМИ.

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

 Выскребание» информации с экрана. В ходе «выскребания» информации с экрана вы извлекаете структурированный контент из обычной веб–страницы с помощью утилиты («скребка») или небольшого кусочка кода. Хотя этот метод является весьма эффективным и может применяться в большом количестве случаев, он требует понимания того, как устроен Интернет.

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

В данном разделе мы рассмотрим самый простой пример «выскребания» данных из веб–страницы в формате HTML.

Что такое машиночитаемые данные?

Цель всех упомянутых методов заключается в получении машиночитаемых данных. Машиночитаемые данные создаются для их обработки компьютером, а не для их презентации пользователю–человеку. Структура таких данных связана с содержащейся в них информацией, а не с тем, как они представляются пользователю на экране. Примеры легких машиночитаемых форматов включают в себя файлы CSV, XML, JSON и Excel, в то время как такие форматы, как документы Word, страницы HTML и файлы PDF служат больше для визуального представления информации. Например, PDF — это язык, который создан непосредственно для принтера, он несет информацию главным образом о положении линий и точек на странице, а не об отдельных символах.

«Выскребание» веб–сайтов: зачем?

Каждый из вас делал это: попав на веб–сайт и увидев интересную таблицу, вы пытались скопировать ее в Excel, чтобы поработать с ней или сохранить для дальнейшего использования. Однако это получается далеко не всегда, бывает и так, что нужная вам информация разбросана по большому количеству сайтов. Копировать данный вручную бывает очень утомительно, поэтому имеет смысл применить для данной процедуры кое–какой код.

Преимущество «выскребания» заключается в том, что вы можете применить этот метод практически на любом сайте — от прогнозов погоды до правительственных расходов, даже если на этом сайте нет API для доступа к сырым данным.

Что можно и что нельзя выскрести

Конечно, в процессе «выскребания» существуют некоторые ограничения. К факторам, затрудняющим «выскребание» данных с сайта, относятся:

 Плохо отформатированный HTML–код, содержащий минимальное количество информации или не содержащий ее вовсе, например, старые сайты государственных органов.

 Системы аутентификации, созданные для предотвращения автоматического доступа, например, введение кодов (CAPTCHA) или взимание оплаты.

 Системы, отслеживающие по файлам cookies браузера, чем занимается пользователь в ходе данной сессии.

 Отсутствие полного перечня элементов и возможности поиска с использованием групповых символов.

 Блокирование масштабного доступа администраторами сервера.

Кроме того, существуют правовые ограничения: в некоторых странах признаются права на базы данных, которые могут ограничивать ваше право на использование информации, опубликованной в Интернете. В некоторых случаях вы можете проигнорировать эти положения и воспользоваться такой информацией — в зависимости от вашей юрисдикции вы можете обладать особыми правами как журналист. «Выскребание» свободно доступных официальных данных должно быть разрешено, но вы можете захотеть перепроверить их перед публикацией. Коммерческие организации и некоторые НПО менее терпимо относятся к «выскребанию» данных и могут подать жалобу на то, что вы «препятствуете» работе их систем. Использование другой информации может нарушать права физических лиц на неприкосновенность личной жизни и, таким образом, нарушать законы о неприкосновенности личной жизни или профессиональную этику.

Инструменты, помогающие в «выскребании» данных

Существует множество программ, с помощью которых можно извлекать массивы данных с веб–сайтов, в т. ч. дополнения для браузеров и определенные веб–сервисы. В зависимости от вашего браузера автоматизировать выполнение некоторых утомительных задач вам помогут такие инструменты, как Readability(который помогает извлекать из веб–страницы текст) или DownThemAll(который помогает загружать несколько файлов одновременно), а приложение для браузера Chrome Scraper extensionбыло разработано специально для извлечения таблиц из веб–сайтов. Такие дополнения, как FireBug(для Firefox, оно же уже включено в Chrome, Safari и IE), позволят вам точно определить, как организован веб–сайт и какие коммуникации осуществляются между вашим браузером и сервером.

Веб–сайт ScraperWikiпоможет вам встроить коды «скребков» в программы, написанные на различных языках, в т. ч. на Python, Ruby и PHP. Если вы хотите начать выскребать данные без утомительного настраивания программ на вашем компьютере, то это именно то место, которое вам нужно посетить. Произвести сбор данных с других веб–сайтов вам могут также помочь такие сервисы, как Google Spreadsheets and Yahoo! Pipes.

Как работает веб–скребок?

Веб–скребки представляют собой небольшие куски кодов, написанные на различных языках программирования, например, на Python, Ruby или PHP. Выбор языка зачастую зависит от того, каким языком пользуется ваше окружение: если кто–либо в вашем ньюсруме или городе уже работает с одним из этих языков, то вам имеет смысл выбрать тот же язык.

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

Показывая веб–сайт, ваш браузер практически всегда будет использовать две технологии: HTTP (это способ общения с сервером, необходимый для запроса конкретных ресурсов, например, документов, изображений или видео) и HTML (это язык, на котором строятся веб–сайты).

Анатомия веб–страницы

Структура любой HTML–страница представляет собой иерархию контейнеров (которые задаются HTML–тэгами). Большой контейнер содержит в себе множество более мелких — например, таблицу, которая делится на более мелкие элементы: ряды и ячейки. Существует множество видов тегов, которые выполняют разные функции — некоторые создают контейнеры, другие оформляют таблицы, изображения или рисунки. Тэги могут иметь дополнительные свойства (например, они могут быть уникальными идентификаторами) и могут делиться на группы, называемые классами, что предоставляет возможность находить и захватывать определенные элементы в документе. Выбор необходимых элементов и извлечение их содержания играют определяющую роль в написании «скребка».