Простой Python. Современный стиль программирования (Любанович) - страница 163

• DELETE — этот глагол говорит сам за себя: DELETE удаляет. Мы за правдивость в рекламе!

Клиент RESTful также может запрашивать содержимое одного или нескольких типов с помощью заголовков запроса HTTP. Например, сложный сервис с интерфейсом REST может принимать и возвращать данные в строках JSON.

JSON

В главе 1 были показаны два фрагмента кода, с помощью которых мы получали информацию о популярных видео на YouTube, а в главе 8 мы узнали о JSON. JSON особенно хорошо подходит для создания веб-серверов и обмена данными. Этот формат наиболее популярен в сетевых API вроде OpenStack.

Поиск и выборка данных

Иногда вам нужно получить немного больше информации — рейтинг фильма, цену акции или доступность продукта, — но информация доступна только на HTML-страницах, при этом она окружена рекламой и посторонним контентом.

Вы можете извлечь необходимую информацию вручную, сделав следующее.

1. Введите URL в браузер.

2. Подождите, пока загрузится удаленная страница.

3. Просмотрите отображенную страницу на предмет необходимой информации.

4. Запишите ее где-нибудь.

5. Повторите процесс для связанных URL.

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

Если вам нужно мощное решение, объединяющее в себе возможности поиска и выборки данных, вам стоит загрузить Scrapy (http://scrapy.org/):

>$ pip install scrapy

Scrapy — это фреймворк, а не модуль, в отличие от BeautifulSoup. Он имеет больше возможностей, но зачастую его трудно настроить. Чтобы узнать больше о Scrapy, прочтите документацию (http://scrapy.org/) или познакомьтесь с ним по адресу http://bit.ly/using-scrapy.

Получаем HTML-код с помощью BeautifulSoup

Если у вас уже есть HTML-данные с сайта и вы просто хотите извлечь оттуда данные, вам подойдет BeautifulSoup (http://www.crummy.com/software/BeautifulSoup/). Анализировать HTML труднее, чем кажется. Это происходит потому, что большая часть HTML-кода на общедоступных веб-страницах технически некорректна: незакрытые теги, неправильная вложенность и прочие усложнения. Если вы пытаетесь написать свой HTML-анализатор с помощью регулярных выражений, которые мы рассматривали в главе 7, вы довольно скоро столкнетесь с подобным беспорядком.

Для того чтобы установить BeautifulSoup, введите следующую команду (не забудьте поставить в конце четверку, иначе pip попробует установить более старую версию и, возможно, выдаст ошибку):