Python 3 web - загрузка страницы или файла по его url

Автор: Igor Kirsanov

В Python 3 для web немного изменился синтаксис загрузки информации. Ниже приведена функция позволяющая загрузить любые данные доступные без авторизации не зависимо от того файл это или страница.


#! /usr/bin/env python
# -*- coding: utf-8 -*-
import urllib.request
 
def GetURL(url):
    s = 'error'
    try:
        f = urllib.request.urlopen(url)
        s = f.read()
    except urllib.error.HTTPError:
        s = 'connect error'
    except urllib.error.URLError:
        s = 'url error'
    return s
 
print (GetURL('http://wd5.ru/'))

Внимание: в python 3 различается в бинарном или в текстовом режиме передается информация. В данном случае информация передается в бинарном режиме.

Для сохранения в текстовом виде необходимо декодировать информацию в нужной кодировке. Для сохранения сразу в файл нужно просто записывать данные, но обязательно в бинарном режиме флаг 'wb'