Найти тему
programmer's notes (python and more)

Программирование на языке Python. Работа с Интернет. Библиотека urllib. Обзор модулей

Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.

Модули библиотеки urlib

Библиотека urlib очень полезная, если собрались писать программу, которая работает с интернет-ресурсами. В ней есть несколько полезных модулей. Сегодня, сильно не углубляясь, я сделаю такой не большой обзор. Ну, а далее в следующих статьях я остановлюсь на них подробнее. Кроме того, в сущности я начинаю целую подборку по программированию в сети Интернет. Там будет много всего, кроме, впрочем, web-программирования, конечно. Об этом отдельный разговор.

  • urllib.request — пожалуй самый важный модуль библиотеки, ну и довольно сложный. Отвечает за доступ в сеть Интернет.

Пример. Получение web-страницы.

#!/usr/bin/python3
import urllib.request as url
req = url.urlopen('http://lib.ru')
html = req.read()
print(html)
fn = open('web.html', 'bw')
fn.write(html)
fn.close()

В результате в текущем каталоге появится html-страница (web.html) с сайта http://lib.ru. Надо только иметь в виду, что если на странице есть JavaScript'овые функции, то запрос их не обрабатывает. Чтобы их обработать нужно использовать какую-то более мощную библиотеку или доступ к возможностям какого-либо браузера.

  • urllib.parse — модуль отвечает за парсинг URL (Uniform Resource Locator, другими словами адрес ресурса в сети Интернет). Парсинг такого адреса нужная штука и не всегда проста.

Пример некоторых возможностей urlib.parse. Мы в другой статье вернёмся к этому модулю с более подробным его описанием.

#!/usr/bin/python3
import urllib.parse as prs
url = 'https://dzen.ru/?yredirect=true&clid=2574588&win=543'
dlst = prs.urlparse(url)
print(dlst.scheme)
print(dlst.netloc)
print(dlst.path)
print(dlst.query)
print(prs.urlsplit(url))

Результат выполнения

https
dzen.ru
/
yredirect=true&clid=2574588&win=543
SplitResult(scheme='https', netloc='dzen.ru', path='/', query='yredirect=true&clid=2574588&win=543', fragment='')

  • urllib.response — описывает объект ответа сервера. Статус, заголовки. Модуль вспомогательный, так как его возможности используются в модуле urlib.request.
  • urllib.error — для обработки ошибок и исключений при работе Интернет-запросами.
  • urllib.robotparser — может быть использован для разбора файлов robots.txt.

Например

#!/usr/bin/python3
import urllib.robotparser
rp = urllib.robotparser.RobotFileParser()
rp.set_url('http://lib.ru/robots.txt')
rp.read()
print(rp)

Результат выполнения

User-agent: *
Disallow: /~moshkow/book
Disallow: /win
Disallow: /koi
Disallow: /iso
Disallow: /mac
Disallow: /alt
Disallow: /lat
Disallow: /cgi-bin
Disallow: /LYNX
Disallow: /AQUARIUM
Disallow: /MPECHKIN
Disallow: /rk
Disallow: /Forum

Пока всё. В дальнейшем будут статьи, которые более подробно описывают перечисленные модули.

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

Ну что вам рассказать про Интернет, в сети у нас отличная погода
Ну что вам рассказать про Интернет, в сети у нас отличная погода