Перейти к содержимому

Какой модуль стандартной библиотеки python позволяет работать с www на более низком уровне

  • автор:

КАКОЙ МОДУЛЬ СТАНДАРТНОЙ БИБЛИОТЕКИ PYTHON ПОЗВОЛЯЕТ РАБОТАТЬ С WWW НА БОЛЕЕ НИЗКОМ УРОВНЕ

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

Чтобы выполнить HTTP-запрос, необходимо установить соединение с сервером, сформировать HTTP-запрос и отправить его. В следующем примере показано, как выполнить GET-запрос к серверу Google:

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((‘www.google.com’, 80))
s.sendall(b’GET / HTTP/1.1\r\nHost: www.google.com\r\n\r\n’)
data = s.recv(1024)
s.close()
print(repr(data))

В этом примере мы создаем сокет и устанавливаем соединение с сервером Google на порту 80. Затем мы отправляем GET-запрос, запросив содержимое корневой страницы. Наконец, мы получаем ответ от сервера и закрываем соединение с сокетом.

Хотя модуль socket предоставляет возможность осуществлять прямой доступ к сокетам, использование этого модуля может быть достаточно сложным для большинства задач, связанных с работой в сети. В таких случаях рекомендуется использовать более высокоуровневые библиотеки, такие как http.client или urllib.request .

Python ТОП 10 крутейших библиотек!

Python requests http, https запросы, requests методы get и post, подключаемся к api через python

Работа с сетью в Python: Socket и HTTP. Python Advanced. Урок 1

Основы NumPy Python — Массивы, Матрицы И Операции Над Ними

Работа с HTTP в Python. Библиотека requests. Модули в Python

Python с нуля. Урок 8 — Модули

Язык программирования Python — что на нем пишут, сколько за него платят

5 Лучших Библиотек Для Программирования На Python — Библиотеки Которые Должен Знать Каждый

#5. Математические функции и работа с модулем math — Python для начинающих

BLGPG-75F9CEFCBF26-23-12-09-16

Новые материалы:

  • Deque методы python
  • Python тип данных bytes
  • Игры на pyqt
  • Maximum recursion depth exceeded while calling a python object что значит
  • Асинхронные фреймворки python
  • Обращение фрагмента python
  • Мешок слов python
  • Python виртуальная машина
  • Перевод кода из python в c
  • Даны катеты прямоугольного треугольника найти его периметр python

КАКОЙ МОДУЛЬ СТАНДАРТНОЙ БИБЛИОТЕКИ PYTHON ПОЗВОЛЯЕТ РАБОТАТЬ С WWW НА БОЛЕЕ НИЗКОМ УРОВНЕ

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

Чтобы выполнить HTTP-запрос, необходимо установить соединение с сервером, сформировать HTTP-запрос и отправить его. В следующем примере показано, как выполнить GET-запрос к серверу Google:

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((‘www.google.com’, 80))
s.sendall(b’GET / HTTP/1.1\r\nHost: www.google.com\r\n\r\n’)
data = s.recv(1024)
s.close()
print(repr(data))

В этом примере мы создаем сокет и устанавливаем соединение с сервером Google на порту 80. Затем мы отправляем GET-запрос, запросив содержимое корневой страницы. Наконец, мы получаем ответ от сервера и закрываем соединение с сокетом.

Хотя модуль socket предоставляет возможность осуществлять прямой доступ к сокетам, использование этого модуля может быть достаточно сложным для большинства задач, связанных с работой в сети. В таких случаях рекомендуется использовать более высокоуровневые библиотеки, такие как http.client или urllib.request .

Python ТОП 10 крутейших библиотек!

Python requests http, https запросы, requests методы get и post, подключаемся к api через python

Работа с сетью в Python: Socket и HTTP. Python Advanced. Урок 1

Основы NumPy Python — Массивы, Матрицы И Операции Над Ними

Работа с HTTP в Python. Библиотека requests. Модули в Python

Python с нуля. Урок 8 — Модули

Язык программирования Python — что на нем пишут, сколько за него платят

5 Лучших Библиотек Для Программирования На Python — Библиотеки Которые Должен Знать Каждый

#5. Математические функции и работа с модулем math — Python для начинающих

BLGPG-75F9CEFCBF26-23-12-09-16

Новые материалы:

  • Deque методы python
  • Python тип данных bytes
  • Игры на pyqt
  • Maximum recursion depth exceeded while calling a python object что значит
  • Асинхронные фреймворки python
  • Обращение фрагмента python
  • Мешок слов python
  • Python виртуальная машина
  • Перевод кода из python в c
  • Даны катеты прямоугольного треугольника найти его периметр python

Python: Стандартная библиотека

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

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

Вот советы, которые помогут повысить уровень профессионализма:

  • Всегда отслеживайте, с каким типом данных вы работаете. Так вы найдете необходимую функцию в соответствующем разделе документации. Например, для работы со строками нужно изучать строковые функции
  • Периодически открывайте раздел со стандартными функциями по вашей тематике, изучайте сигнатуры и способы использования.
  • Чаще читайте чужой код на GitHub. Особенное внимание обращайте на код библиотек, которые используете

Если следовать этим советам и внимательно относиться к деталям, то уже скоро вы заметите, как развиваетесь и растете как профессионал.

Задание

Функция type() позволяет определить тип передаваемого аргумента. Название типа возвращается в виде строки. Например, вызов type(10) вернёт строку (int, это сокращение от integer — целое число).

print(type('wow')) #

Выведите на экран тип значения переменной motto .

Упражнение не проходит проверку — что делать? ��

Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:

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

В моей среде код работает, а здесь нет ��

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

Мой код отличается от решения учителя ��

Это нормально ��, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.

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

Прочитал урок — ничего не понятно ��

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

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

Полезное

  • Справочник функций Python
  • Как искать техническую информацию

Определения

  • Стандартная библиотека — набор полезных функций, входящий в комплект поставки языка программирования.

Стандартная библиотека¶

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

Рассмотрим некоторые наиболее часто используемые модули этой библиотеки. Детальное описание всех модулей стандартной библиотеки Python можно найти в разделе «Library Reference» документации, входящей в комплект поставки Python.

Давайте изучим несколько полезных модулей.

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

Модуль sys¶

Модуль sys содержит функциональность, характерную для системы. Так мы видели, что список sys.argv содержит аргументы командной строки.

Предположим, нам нужно узнать версию используемой команды Python с тем, чтобы, к примеру, убедиться в том, что мы используем как минимум версию 3. Модуль sys предоставляет такую возможность.

>>> import sys >>> sys.version_info (3, 0, 0, 'beta', 2) >>> sys.version_info[0] >= 3 True 

Как это работает:

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

Сохраните как versioncheck.py :

import sys, warnings if sys.version_info[0]  3: warnings.warn("Для выполнения этой программы необходима как минимум \ версия Python 3.0", RuntimeWarning) else: print('Нормальное продолжение') 

Вывод:

$ python2.7 versioncheck.py versioncheck.py:6: Для выполнения этой программы необходима как минимум версия Python 3.0 RuntimeWarning) $ python3 versioncheck.py Нормальное продолжение 

Как это работает:

Мы используем один из модулей стандартной библиотеки, который называется warnings и служит для отображения предупреждений пользователю. Если версия Python менее 3, мы показываем соответствующее предупреждение.

Модуль logging¶

Представьте ситуацию, когда необходимо сохранить некоторые отладочные или другие важные сообщения где-нибудь, чтобы иметь возможность позже проверить, отработала ли программа, как ожидалось. Как мы «сохраним где-нибудь» эти сообщения? Сделать это можно при помощи модуля logging .

Сохраните как use_logging.py :

import os, platform, logging if platform.platform().startswith('Windows'): logging_file = os.path.join(os.getenv('HOMEDRIVE'), os.getenv('HOMEPATH'), 'test.log') else: logging_file = os.path.join(os.getenv('HOME'), 'test.log') print("Сохраняем лог в", logging_file) logging.basicConfig( level=logging.DEBUG, format='%(asctime)s : %(levelname)s : %(message)s', filename = logging_file, filemode = 'w', ) logging.debug("Начало программы") logging.info("Какие-то действия") logging.warning("Программа умирает") 

Вывод:

$ python3 use_logging.py Сохраняем лог в C:\Users\swaroop\test.log 

Если открыть файл test.log , он будет выглядеть примерно так:

2012-10-26 16:52:41,457 : DEBUG : Начало программы 2012-10-26 16:52:41,474 : INFO : Какие-то действия 2012-10-26 16:52:41,475 : WARNING : Программа умирает 

Как это работает:

Мы использовали три модуля из стандартной библиотеки: модуль os для взаимодействия с операционной системой, модуль platform для получения информации о платформе (т.е. операционной системе) и модуль logging для сохранения лога 1 .

Прежде всего, при помощи строки, возвращаемой функцией platform.platform() мы проверяем, какая операционная система используется (для более подробной информации см. import platform; help(platform) ). Если это Windows, то мы определяем диск, содержащий домашний каталог, путь к домашнему каталогу на нём и имя файла, в котором хотим сохранить информацию. Сложив все эти три части, мы получаем полный путь к файлу. Для других платформ нам нужно знать только путь к домашнему каталогу пользователя, и мы получим полный путь к файлу.

При помощи функции os.path.join() мы объединяем три части пути к файлу вместе. Мы используем эту функцию вместо простого объединения строк для того, чтобы гарантировать, что полный путь к файлу записан в формате, ожидаемом операционной системой.

Далее мы конфигурируем модуль logging таким образом, чтобы он записывал все сообщения в определённом формате в указанный файл.

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

Модули urllib и json¶

#!/usr/bin/python # Filename: yahoo_search.py import sys if sys.version_info[0] != 3: sys.exit('This program needs Python 3.0') import json import urllib, urllib.parse, urllib.request, urllib.response # Get your own APP ID at http://developer.yahoo.com/wsregapp/ YAHOO_APP_ID = 'jl22psvV34HELWhdfUJbfDQzlJ2B57KFS_qs4I8D0Wz5U5_yCI1Awv8.lBSfPhwr' SEARCH_BASE = 'http://search.yahooapis.com/WebSearchService/V1/webSearch' class YahooSearchError(Exception): pass # Taken from http://developer.yahoo.com/python/python-json.html def search(query, results=20, start=1, **kwargs): kwargs.update( 'appid': YAHOO_APP_ID, 'query': query, 'results': results, 'start': start, 'output': 'json' >) url = SEARCH_BASE + '?' + urllib.parse.urlencode(kwargs) result = json.load(urllib.request.urlopen(url)) if 'Error' in result: raise YahooSearchError(result['Error']) return result['ResultSet'] query = input('What do you want to search for? ') for result in search(query)['Result']: print("  : ".format(result['Title'], result['Url'])) 

Резюме¶

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

Далее мы обратимся к некоторым аспектам, которые сделают вашу экскурсию по Python более «завершённой».

  1. log — англ. «журнал», «вести журнал» (прим.перев.) ↩

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *