355 500 произведений, 25 200 авторов.

Электронная библиотека книг » Д. Грей » Пособие по журналистике данных » Текст книги (страница 13)
Пособие по журналистике данных
  • Текст добавлен: 26 сентября 2016, 16:16

Текст книги "Пособие по журналистике данных"


Автор книги: Д. Грей


Жанр:

   

Справочники


сообщить о нарушении

Текущая страница: 13 (всего у книги 21 страниц)

«WOBBING» Работает. используйте его!

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

Рис 54. The Farm Subsidy website (Farmsubsidy.org)

Пример 1 Фермерские субсидии

Каждый год ЕС выплачивает почти 60 млрд. евро фермерам и фермерским хозяйствам. Каждый год. Эта практика началась в конце 1950–х годов, и политики всегда говорили, что эти субсидии помогают нашим беднейшим фермерам. Однако первая информация, полученная в Дании в 2004 году на основании законодательства о свободе информации, показала, что все это только разговоры. Мелкие фермеры часто жаловались в приватных разговорах и в СМИ, что они с трудом выживают, а большая часть субсидий на самом деле шла горстке крупных землевладельцев и в сельское хозяйство. И я, что вполне объяснимо, захотел узнать: а как обстоят дела в других странах Европы?

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

В 2004 году Комиссия отказалась предоставить данные, главным аргументом было то, что данные загружаются в базу данных, и для их извлечения потребуется проделать большую работу. Такие аргументы европейский уполномоченный по правам человека называл плохим администрированием. Все документы по данному делу вы сможете найти на веб–сайте wobbing.eu. Тогда, в 2004 году, мы не хотели разбирать правомерность таких действий. Нам были нужны данные.

И мы объединились с партнерами по всей Европе, чтобы получить данные по каждой конкретной стране. Наши коллеги из Англии, Швеции и Нидерландов получили данные в 2005 году. Финляндия, Польша, Португалия, регионы Испании, Словения тоже раскрыли эти данные. Даже в Германии, очень неохотно раскрывающей свои данные, я добился успеха и получил некоторые данные в земле Северный Рейн–Вестфалия в 2007 году. Чтобы получить данные, мне пришлось идти в суд – однако в результате я опубликовал неплохие материалы в журнале Stern.

Было ли совпадением то, что Дания и Соединенное Королевство первыми открыли свои данные? Нет, не было. Охватывая взглядом всю политическую картину того времени, фермерские субсидии следует рассматривать в контексте переговоров в ВТО, в которых субсидии подвергались давлению. Дания и Соединенное Королевство являются наиболее либеральными странами Европы, и политические ветры в этих странах вполне могли дуть в направлении прозрачности.

Однако данная история на этом не закончилась, с другими эпизодами и данными можно ознакомиться на сайте farmsubsidy.org.

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

Пример 2 Побочные эффекты

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

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

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

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

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

Выводы: Не удовлетворяйтесь ответом «нет», когда речь идет о прозрачности. Будьте настойчивы и не переставайте следить за ходом событий. Ситуация может измениться и с течением времени вы можете получить данные, которые не могли получить вначале.

Пример 3 Контрабанда смерти

Новейшая история принесла много горя целым народам, особенно в результате войн и в переходные времена. Как журналисты могут добыть печальные данные, если – например – те люди, которые получали прибыли в ходе войн минувшего десятилетия, сейчас находятся у власти? Именно такую задачу поставила перед собой группа журналистов из Словении, Хорватии и Боснии.

Эта команда решила заняться расследованием торговли оружием в бывшей Югославии в период действия эмбарго ООН в начале 1990–х годов. В основе работы лежали документы парламентских расследований по данному вопросу. Чтобы задокументировать маршруты поставок и раскрыть схему торговли, необходимо было отслеживать средства перевозки по номерам судов в портах и по номерным знакам грузовиков.

Парламентские комиссии Словении не раз проводили расследования по вопросу получения прибылей в ходе балканских войн, однако они так и не пришли к какому–то определенному выводу. Вместе с тем был получен ряд очень ценных документов, с которых был снят гриф секретности, и данных, в т. ч. 6000 страниц документов, которые были добыты словенской командой по запросу в рамках законодательства о свободе информации.

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

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

Выводы: Ищите «сырые» материалы в самых неожиданных местах и объединяйте их с данными, находящимися в открытом доступе.

Бриджит Алфтер, Journalismfund.eu

Получение данных из сети

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

 Получить данные с помощью размещенных в сети 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–тэгами). Большой контейнер содержит в себе множество более мелких – например, таблицу, которая делится на более мелкие элементы: ряды и ячейки. Существует множество видов тегов, которые выполняют разные функции – некоторые создают контейнеры, другие оформляют таблицы, изображения или рисунки. Тэги могут иметь дополнительные свойства (например, они могут быть уникальными идентификаторами) и могут делиться на группы, называемые классами, что предоставляет возможность находить и захватывать определенные элементы в документе. Выбор необходимых элементов и извлечение их содержания играют определяющую роль в написании «скребка».

При просмотре элементов веб–страницы все ее содержимое может быть разбито на контейнеры внутри контейнеров.

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

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

Тэги работают как разделители, обозначая начало и конец определенного блока. Например, означает начало выделенного курсивом текста, а тэг означает конец этого блока. Все просто.

Рис 55. The International Atomic Energy Agency’s (IAEA) portal (news.iaea.org)

Пример: сбор информации о происшествиях в ядерной отрасли с использованием кода на языке Python

NEWS  – это портал Международного агентства по атомной энергии (МАГАТЭ), посвященный происшествиям в ядерной отрасли по всему миру (и являющийся уверенным кандидатом в члены Клуба роковых названий!). На этой веб–странице происшествия представлены в виде простого, похожего на блог списка, который может быть легко извлечен.

Для начала создайте новый «скребок» на языке Python на сайте ScraperWiki, в результате чего вы получите почти пустую область текста, в которой будет находиться только вспомогательный код. В другом окне откройте браузер, откройте там сайт МАГАТЭи затем откройте в этом браузере панель разработчика. В режиме просмотра «Элементы» попытайтесь найти HTML–элементы заголовка одной из новостей. Панель разработчика браузера помогает связывать элементы веб–страницы с лежащим в их основе HTML–кодом.

Изучая эту страницу, вы поймете, что заголовки являются элементами

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

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

# Просмотреть все строки в таблице

# Unicorn не должен выходить за левый край

Постарайтесь быть как можно более точным и не предполагайте, что программа что–либо знает о странице, которую вы пытаетесь «выскрести».

Теперь, когда вы написали свой первый псевдо–код, давайте сравним его с реальным кодом нашего первого «скребка»:

import scraperwiki

from lxml import html

В этой первой части мы импортируем имеющийся функционал из библиотек – кусочки ранее написанных кодов. scraperwiki предоставит нам возможность скачивать веб–сайты, а lxml является инструментом структурного анализа HTML– документов. Хорошая новость: если вы пишете код «скребка» на языке Python с помощью сайта ScraperWiki, эти две строки всегда будут одинаковыми.

url = »http://www–news.iaea.org/EventList.aspx»

doc_text = scraperwiki.scrape(url)

doc = html.fromstring(doc_text)

Далее код вводит имя (переменную): url и в качестве его значения устанавливает URL–адрес страницы МАГАТЭ. Это говорит «скребку» о том, что такой объект существует, и что мы хотим уделить ему внимание. Обратите внимание, что URL–адрес находится в кавычках, так как он является не частью программного кода, а строкой, последовательностью символов.

Затем мы используем переменную url в качестве вводной для функции scraperwiki.scrape. Эта функция будет выполнять некую определенную работу – в данном случае она будет загружать веб–страницу. Когда эта работа будет выполнена, ее результаты будут переданы другой переменной, doc_text. doc_text теперь будет содержать актуальный текст веб–сайта – не тот, который вы видите в браузере при посещении страницы, а исходный код, включая теги. Так как осуществлять структурный анализ такого текста не совсем просто, мы используем другую функцию, html.fromstring, для создания особого представления, в котором мы можем легко находить элементы, так называемую объектную модель документа (document object model, DOM).

for row in doc.cssselect(»#tblEvents tr»):

link_in_header = row.cssselect(»h4 a»).pop()

event_title = link_in_header.text

print event_title

На этом последнем этапе мы используем DOM для поиска каждой строки в нашей таблице и извлечения из нее заголовка события. Здесь используются две новые концепции: петля и выбор элементов (.cssselect). Петля делает то, что и подразумевается ее названием: она обходит список блоков, назначая каждому из них временное имя (в данном случае это строки) и затем выполняет для каждого из них намеченные действия.

Вторая новая концепция, выбор элементов, использует специальный язык для поиска элементов в документе. Для добавления к HTML–элементам информации о их расположении обычно используются CSS–селекторы, и их же можно использовать для точного отбора этих элементов на странице. В данном случае (строка 6) мы выбираем #tblEvents tr, вследствие чего каждый тэг

в элементе таблицы будет сопоставляться с ID tblEvents (хэш здесь просто обозначает ID). В результате мы получим список элементов .

То же мы наблюдаем и в следующей строке (строка 7), в которой мы применяем другой селектор для поиска всех тэгов (обозначающих гиперссылку) внутри

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

Обратите внимание, что некоторые элементы в DOM содержат настоящий текст, т. е. текст, не являющийся частью языка разметки, который мы можем извлечь, воспользовавшись кодом [element].text, размещенным в строке 8. И, наконец, в строке 9 мы направляем этот текст в консоль ScraperWiki. Если вы теперь запустите ваш «скребок», то в меньшем по размеру окошке начнут появляться названия событий с сайта МАГАТЭ.

Рис 56. A scraper in action (ScraperWiki)

Вы видите работу простейшего «скребка»: он загружает веб–страницу, преобразует ее в DOM и затем предоставляет вам возможность выбирать и извлекать определенные элементы. На основе данного шаблона вы можете попробовать решить остальные вопросы, используя документацию ScraperWiki и языка Python:

 Можно ли найти адрес ссылки, находящейся в заголовке каждого события?

 Можно ли выбрать небольшой контейнер, который содержит дату и место, используя CSS–имя его класса, и затем извлечь текст этого элемента?

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

 Список событий включает в себя много страниц, можно ли осуществить наш поиск по всем страницам, чтобы получить информацию и о старых событиях?

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

Фридрих Линденберг, Open Knowledge Foundation


    Ваша оценка произведения:

Популярные книги за неделю

    wait_for_cache