Python Доступ в Интернет с использованием Urllib.Request и urlopen()
⚡ Умное резюме
urllib — это стандарт. Python модуль для доступа к интернет-данным, позволяющий открывать программы. URLФункция `urllib.request.urlopen()` подключается к веб-адресу и считывает ответ сервера непосредственно в веб-интерфейс. Python.

В разделах ниже объясняется, что такое urllib и как открыть файл. URL а также прочитать его HTML-код, узнать, как обрабатывать ошибки, загружать файлы и выбирать между библиотеками urllib и requests.
Что такое урллиб?
urllib - это Python модуль, который можно использовать для открытия URLОн определяет функции и классы, которые помогают в URL действия.
С PythonВы также можете получать доступ к данным из интернета, таким как XML, HTML и JSON, и затем работать с этими данными напрямую. В разделах ниже мы рассмотрим, как получать данные из сети. Например, здесь мы используем Guru99 видео URL, получить к нему доступ, используя Pythonи распечатать HTML-файл этого файла. URL.
Пакет urllib объединяет несколько модулей: urllib.request для открытия URLs, urllib.error для исключений, которые могут возникать при запросах, urllib.parse для построения и анализа URLи urllib.robotparser для чтения файлов robots.txt.
Как открыть URL с использованием Urllib
Прежде чем запускать код для подключения к интернету, нам необходимо импортировать... URL библиотечный модуль, или «urllib».
- Импортировать urllib
- Определите свою основную функцию
- Объявите переменную webUrl
- Затем вызовите функцию urlopen из библиотеки urllib.
- URL Мы открываем... Guru99 уроков по YouTube
- Далее мы выводим код результата.
- Код результата извлекается путем вызова функции getcode для созданной нами переменной webUrl.
- Мы преобразуем это в строку, чтобы ее можно было объединить с нашей строкой «код результата».
- Это будет обычный HTTP-код «200», указывающий на успешную обработку HTTP-запроса.
Как получить HTML-файл из URL in Python
Вы также можете прочитать HTML-файл, используя функцию `read()`. PythonПри запуске кода HTML-файл появится в консоли.
- Вызовите функцию `read()` для переменной `webUrl`.
- Метод `read()` позволяет читать содержимое файлов данных.
- Прочитайте весь текст. URL в переменную с именем data
- Запустите код, и он выведет данные в формате HTML.
Вот полный код:
Python 2 Пример
# # read the data from the URL and print it # import urllib2 def main(): # open a connection to a URL using urllib2 webUrl = urllib2.urlopen("https://www.youtube.com/user/guru99com") #get the result code and print it print "result code: " + str(webUrl.getcode()) # read the data from the URL and print it data = webUrl.read() print data if __name__ == "__main__": main()
Python 3 Пример
# # read the data from the URL and print it # import urllib.request # open a connection to a URL using urllib webUrl = urllib.request.urlopen('https://www.youtube.com/user/guru99com') #get the result code and print it print ("result code: " + str(webUrl.getcode())) # read the data from the URL and print it data = webUrl.read() print (data)
Как обрабатывать ошибки urllib: URLОшибка и HTTPError
Запрос не всегда завершается успешно. Если что-то идёт не так, urllib вместо возврата данных генерирует исключение, поэтому важно обрабатывать такие ошибки. Модуль urllib.error определяет два основных класса исключений.
- HTTPError Этот сигнал возникает, когда сервер возвращает код ошибки, например, 404 Not Found или 500 Internal Server Error. Он содержит код ошибки и тело ответа.
- URLОшибка Этот сигнал возникает, когда сервер вообще недоступен, например, из-за неправильного доменного имени или отсутствия подключения к интернету. Он содержит атрибут reason, объясняющий причину сбоя.
Поскольку HTTPError является подклассом URLОшибка: всегда сначала перехватывайте HTTPError, чтобы каждый тип ошибки обрабатывался отдельно.
from urllib.request import urlopen from urllib.error import HTTPError, URLError try: response = urlopen("https://www.guru99.com/no-such-page.html") data = response.read() except HTTPError as error: print("HTTP error:", error.code) except URLError as error: print("URL error:", error.reason)
Обработка этих исключений предотвращает сбои в работе программы и позволяет регистрировать проблему, повторять запрос или использовать кэшированные данные.
Как скачать файл с URL Использование urllib
Чтение URL Сохранение в память подходит для небольших страниц, но для изображений, PDF-документов или наборов данных проще сохранить ответ непосредственно на диск. Модуль urllib.request предлагает два простых способа сделать это.
Функция urlretrieve() загружает файл URL напрямую в локальный файл одной строкой:
from urllib.request import urlretrieve urlretrieve("https://www.python.org/static/img/python-logo.png", "logo.png")
Для более полного контроля откройте URL и запишите байты самостоятельно. Откройте локальный файл в двоичном режиме, поскольку функция urlopen() возвращает байты, а не текст:
from urllib.request import urlopen with urlopen("https://example.com/data.zip") as response: with open("data.zip", "wb") as file: file.write(response.read())
Для очень больших файлов чтение и запись осуществляются в цикле с использованием response.read(8192), поэтому весь файл никогда не будет удерживаться в памяти одновременно.
urllib против библиотеки requests в Python
urllib является частью Python Это стандартная библиотека, поэтому она работает везде без установки. Библиотека requests сторонних разработчиков не встроена, но многие предпочитают её для повседневной работы с HTTP, поскольку её синтаксис короче и понятнее.
Основными отличиями являются:
- Установка: urllib поставляется с Python, в то время как requests необходимо устанавливать с помощью pip.
- Расшифровка: urllib возвращает необработанные байты, которые вы декодируете самостоятельно, в то время как requests декодирует текст и JSON автоматически.
- Удобство: Функция requests обрабатывает сессии, cookie и пользовательские заголовки с минимальным количеством кода.
- зависимости: Библиотека urllib ничего не добавляет, в то время как requests использует библиотеку urllib3.
Выбирайте urllib, если вам не нужны никакие зависимости или требуется лишь быстрый, разовый запрос. Для более крупных проектов, связанных с аутентификацией, сессиями или частыми вызовами API, выбирайте requests. Оба варианта отправляют одни и те же HTTP-запросы, поэтому выбор сводится к удобству или меньшему списку зависимостей.


