Доброго времени суток, читатели, зрители моего канала 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
Пока всё. В дальнейшем будут статьи, которые более подробно описывают перечисленные модули.
Пишите свои предложения и замечания и занимайтесь программированием, хотя бы для поддержания уровня интеллекта.