Я считаю, что для большинства задач, связанных с разработкой веб-клиентов, проще использовать библиотеку requests. Вы можете просмотреть ее документацию по адресу http://docs.python-requests.org/ (она довольно хорошо написана), чтобы получить более подробную информацию. Я покажу вам основные принципы работы с этой библиотекой в данном разделе и буду использовать ее на протяжении всей книги для решения задач, связанных с веб-клиентами.
Для начала вам нужно установить библиотеку requests в свое окружение Python. Из окна терминала (пользователи Windows должны ввести cmd, чтобы получить к нему доступ) введите следующую команду, чтобы установщик пакетов Python pip загрузил последнюю версию пакета и установил ее:
$ pip install requests
Если у вас возникли трудности, прочтите приложение Г, чтобы узнать подробности о том, как установить и использовать pip.
Переделаем предыдущий вызов сервиса с цитатами с помощью библиотеки requests:
>>> import requests
>>> url = 'http://www.iheartquotes.com/api/v1/random'
>>> resp = requests.get(url)
>>> resp
>>> print(resp.text)
I know that there are people who do not love their fellow man, and I hate
people like that!
····-Tom Lehrer, Satirist and Professor
[codehappy] http://iheartquotes.com/fortune/show/21465
Этот пример не сильно отличается от предыдущего, где использовалась библиотека urllib.request.urlopen, но он кажется чуть менее объемным.
Веб-серверы
Веб-разработчики обнаружили, что Python хорошо подходит для написания веб-серверов и программ, работающих на серверной стороне. Это привело к появлению такого множества
Веб-фреймворк предоставляет функции, с помощью которых вы можете построить сайты, поэтому он может решать большее количество задач, чем простой веб-сервер (HTTP). Вы встретитесь с функциями маршрутизации (URL к функции сервера), шаблонами (HTM с динамическими включениями), отладкой и др.
Я не буду говорить в этой книге обо всех фреймворках — рассмотрю лишь те, которые относительно просты в использовании и подходят для создания настоящих сайтов. Я также покажу вам, как запускать динамические части сайта с помощью Python и других составляющих на традиционном веб-сервере.
Простейший веб-сервер Python
Вы можете запустить простейший веб-сервер, просто введя одну строку кода Python:
$ python — m http.server
С помощью этой строки вы реализуете примитивный Python HTTP server. Если никаких проблем не возникло, вы увидите исходное сообщение о статусе:
Serving HTTP on 0.0.0.0 port 8000…
Запись 0.0.0.0 означает
Теперь вы можете запрашивать файлы, чьи пути относительны к вашему текущему каталогу, и они будут вам возвращены. Если вы введете в своем браузере строку http://localhost:8000, то должны увидеть список каталогов, и сервер выведет на экран строки обращения к журналам наподобие следующих:
127.0.0.1 — [20/Feb/2013 22:02:37] "GET / HTTP/1.1" 200 -
localhost и 127.0.0.1 являются для TCP синонимами
• 127.0.0.1 — это IP-адрес клиента.
• Первый символ — это имя удаленного пользователя, если он присутствует.
• Второй символ — это имя авторизующегося пользователя, если требуется.
• [20/Feb/2013 22:02:37] — это дата и время доступа.
• "GET / HTTP/1.1" — это команда, отправленная веб-серверу:
• метод HTTP (GET);
• запрошенный ресурс (/, верхний уровень);
• версия HTTP (HTTP/1.1).
• Последнее число (200) — это код статуса HTTP, возвращенный веб-сервером.
Щелкните на любом файле. Если ваш браузер может распознать его формат (HTML, PNG, GIF, JPEG и т. д.), он должен отобразить его, и сервер занесет этот запрос в журнал. Например, если в вашем текущем каталоге имеется файл oreilly.png, запрос http://localhost:8000/oreilly.png должен вернуть изображение встревоженной зверушки, показанное на рис. 7.1, а в журнале должна появиться похожая запись: