Python содержит модуль urllib для обработки задач, связанных с унифицированным указателем ресурсов (URL). Этот модуль установлен в Python 3 по умолчанию и получает URL-адреса различных протоколов с помощью функции urlopen(). Urllib можно использовать для многих целей, таких как чтение содержимого веб-сайта, выполнение запросов HTTP и HTTPS, отправка заголовков запросов и получение заголовков ответов. Модуль urllib содержит множество других модулей для работы с URL-адресами, например urllib.request, urllib.parse и urllib.error, среди прочих. Эта статья покажет вам, как использовать модуль Urllib в Python.
Пример 1. Открытие и чтение URL-адресов с помощью urllib.request
Модуль urllib.request содержит классы и методы, необходимые для открытия и чтения любого URL-адреса. В следующем сценарии показано, как использовать модуль urllib.request для открытия URL-адреса и чтения содержимого URL-адреса. Здесь метод urlopen() используется для открытия URL-адреса https://www.andreyex.ru/. Если URL-адрес действителен, то содержимое URL-адреса будет сохранено в объектной переменной с именем response. Затем используется метод read() объекта ответа для чтения содержимого URL-адреса.
#!/usr/bin/env python3 # Модуль запроса импорта urllib import urllib.request # Откройте конкретный URL для чтения с помощью urlopen() response = urllib.request.urlopen('https://www.andreyex.ru/') # Распечатать данные ответа URL print("Вывод URL:\n\n", response.read())
Пример 2: Разбор и разбор URL-адресов с помощью urllib.parse
Модуль urllib.parse в основном используется для разделения или объединения различных компонентов URL-адреса. В следующем сценарии показаны различные варианты использования модуля urllib.parse. Четыре функции urllib.parse, используемые в следующем скрипте, включают urlparse, urlunparse, urlsplit и urlunsplit. Модуль urlparse работает как urlsplit, а модуль urlunparse работает как urlunsplit. Между этими функциями есть только одно различие; то есть urlparse и urlunparse содержат дополнительный параметр с именем ‘params’ для разделения и функции соединения. Здесь URL-адрес https://andreyex.ru/play_sound_python/ используется для разделения и присоединения к URL-адресу.
#!/usr/bin/env python3 # Импортировать модуль синтаксического анализа urllib import urllib.parse # Разбор URL с использованием urlparse() urlParse = urllib.parse.urlparse('https://andreyex.ru/play_sound_python/') print(" \n Вывод URL после синтаксического анализа: \n ", urlParse) # Присоединение к URL с помощью urlunparse() urlUnparse = urllib.parse.urlunparse(urlParse) print("\n Объединенный вывод синтаксического анализа URL: \n ", urlUnparse) # Анализ URL с использованием urlsplit() urlSplit = urllib.parse.urlsplit('https://andreyex.ru/play_sound_python/') print(" \n Вывод URL после разделения: \n ", urlSplit) # Присоединение к URL с помощью urlunsplit() urlUnsplit = urllib.parse.urlunsplit(urlSplit) print("\n Объединяющий вывод разделения URL-адреса: \n ", urlUnsplit )
Пример 3: Чтение заголовка ответа HTML с помощью urllib.request
В следующем сценарии показано, как различные части заголовка ответа URL-адреса могут быть получены с помощью метода info(). Модуль urllib.request, используемый для открытия URL-адреса, https://andreyex.ru/python_pause_user_input/, и информация заголовка этого URL-адреса печатается с помощью метода info(). Следующая часть этого сценария покажет вам, как читать каждую часть заголовка отдельно. Здесь значения Server, Date и Content-Type печатаются отдельно.
#!/usr/bin/env python3 # Модуль запроса импорта urllib import urllib.request # Откройте URL для чтения urlResponse = urllib.parse.urlopen('https://andreyex.ru/python_pause_user_input/') # Чтение вывода заголовка ответа URL print(urlResponse. info()) # Отдельное чтение информации заголовка print('Response server =', urlResponse.info()["Server"]) print('Дата ответа =', urlResponse. info()["Date"]) print('Тип содержимого ответа =', urlResponse. info()["Content-Type"])
Пример 4. Чтение ответов URL построчно
В следующем скрипте используется локальный URL-адрес. Здесь тестовый HTML-файл с именем test.html создается в папке var /www/html. Содержимое этого файла читается построчно с помощью цикла for. Метод strip() затем используется для удаления пространства с обеих сторон каждой линии. Вы можете использовать любой HTML-файл с локального сервера для тестирования скрипта. Ниже приводится содержимое файла test.html, использованного в этом примере.
test.html:
<html> <body> Страница тестирования <body> < /html > #!/usr/bin/env python3 # Импортировать модуль urllib.request import urllib.request # Открыть локальный URL-адрес для чтения response = urllib.request.urlopen('http://localhost/test.html') # Прочитать URL из ответа print (' URL: ', response.geturl()) # Прочитать текст ответа построчно print ("\nЗначение содержание:") for line in response: print(line.strip())
Пример 5: Обработка исключений с urllib.error.URLError
В следующем сценарии показано, как использовать URLError в Python через модуль urllib.error.Любой URL-адрес может быть взят от пользователя. Если адрес не существует, будет вызвано исключение URLError и будет напечатана причина ошибки. Если значение URL-адреса находится в недопустимом формате, будет вызвана ошибка ValueError и будет напечатана настраиваемая ошибка.
#!/usr/bin/env python3 # Импортировать необходимые модули import urllib.request import urllib.error # блокировка попытки открыть любой URL для чтения try : url = input("Введите любой адрес URL:") response = urllib.request.urlopen(url) print(response.read()) # Перехватить ошибку URL, которая будет генерироваться при открытии любого URL, except urllib.error.URLError as e: print("Ошибка URL:", e.reason) # Перехватить ошибку неверного URL, except ValueError : print("Введите действительный адрес URL")
Пример 6: Обработка исключений с urllib.error.HTTPError
Следующий сценарий показывает, как использовать HTTPError в Python через модуль urllib.error.HTMLError генерирует , когда данный URL – адрес не существует.
#!/usr/bin/env python3 # Импортировать необходимые модули import urllib.request import urllib.error # Введите любой допустимый URL-адрес url = input("Введите любой URL-адрес:") # Отправьте запрос на URL-адрес request = urllib.request.Request(url) try : # Попытаться открыть URL urllib.request.urlopen(request) print("URL существует") except urllib.error.HTTPError as e: # Распечатать код ошибки и причину ошибки print("Код ошибки:%d\nПричина ошибки:%s" %(e.code,e.reason))
Заключение
В этой статье обсуждаются многие важные применения модуля urllib с использованием различных примеров, чтобы помочь читателям узнать функции этого модуля в Python.