Читаем Пособие по журналистике данных полностью

В этой первой части мы импортируем имеющийся функционал из библиотек — кусочки ранее написанных кодов. 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

Перейти на страницу:

Похожие книги

Русский мат
Русский мат

Эта книга — первый в мире толковый словарь русского мата.Профессор Т. В. Ахметова всю свою жизнь собирала и изучала матерные слова и выражения, давно мечтала издать толковый словарь. Такая возможность представилась только в последнее время. Вместе с тем профессор предупреждает читателя: «Вы держите в руках толковый словарь "Русского мата". Помните, что в нем только матерные, похабные, нецензурные слова. Иных вы не встретите!»Во второе издание словаря включено составителем свыше 1700 новых слов. И теперь словарь включает в себя 5747 слов и выражений, которые проиллюстрированы частушками, анекдотами, стихами и цитатами из произведений русских классиков и современных поэтов и прозаиков. Всего в книге более 550 озорных частушек и анекдотов и свыше 2500 стихов и цитат из произведений.Издательство предупреждает: детям до 16 лет, ханжам и людям без чувства юмора читать книги этой серии запрещено!

Русский фольклор , Татьяна Васильевна Ахметова , Фархад Назипович Ильясов , Ф. Н. Ильясов

Языкознание, иностранные языки / Словари / Справочники / Языкознание / Образование и наука / Словари и Энциклопедии
Справочник школьного психолога
Справочник школьного психолога

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

Светлана Николаевна Костромина

Справочники
Справочник медицинской сестры
Справочник медицинской сестры

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

Виктор Александрович Барановский , Владимир Александрович Плисов , Елена Юрьевна Храмова

Медицина / Справочники / Образование и наука / Словари и Энциклопедии