Библиотека urllib

Введение

Примеры

  • 1

    HTTP GET

    ## Python 2 импорт urllib response = urllib.urlopen ('http://codecamp.ru/documentation/') Использование `urllib.urlopen ()` вернет объект ответа, который может обрабатываться аналогично файлу. print response.code # Prints: 200 `response.code` представляет возвращаемое значение http. 200 в порядке, 404 - не найден и т. Д. Print response.read () ' \ Г \ п \ Г \ п \ Г \ п \ г \ п Документация - Стек. etc '`response.read ()` и `response.readlines ()` могут использоваться для чтения фактического HTML-файла, возвращенного из запроса. Эти методы работают аналогично `file.read *` <! - конечная версия if -> <! - if версия <Python 3.x> [gte 3.0] -> <h2> Python 3 </ h2> < pre translate = "no"> <code> импортировать urllib.request print (urllib.request.urlopen ("http://codecamp.ru/documentation/")) # печатает: <http.client.HTTPResponse at 0x7f37a97e3b00> response = urllib.request.urlopen ("http://codecamp.ru/documentation/") print (response.code) # Отпечатки: 200 print (response.read ()) # Отпечатки: b '<! DOCTYPE html> \ r \ n <html> \ r \ n <head> \ r \ n \ r \ n <title> Документация - переполнение стека </ title> </ code> </ pre> <p> Модуль был обновлен для Python 3. х, но варианты использования остаются в основном теми же. <code translate = "no"> urllib.request.urlopen </ code> вернет похожий файлоподобный объект. </ p> <! - конечная версия if -> </ div> </ article> <article id = "8793"> <div class = "__ example__title"> HTTP POST </ div> <div class = "__ example__body"> <p> В данные POST передайте закодированные аргументы запроса как данные в функцию urlopen () </ p> < ! - если версия <Python 2.x> [lte 2.7] -> <h2> Python 2 </ h2> <pre translate = "no"> <code> import urllib query_parms = {'username': 'stackoverflow' , 'password': 'me.me'} encoded_parms = urllib.urlencode (query_parms) response = urllib.urlopen ("https://codecamp.ru/users/login", encoded_parms) response.code # Вывод: ответ 200. read () # Вывод: '<! DOCTYPE html> \ r \ n <html> \ r \ n <head> \ r \ n \ r \ n <title> Вход в систему - переполнение стека' </ code> </ pre > <! - конец версии if -> <! - if версия <Python 3.x> [gte 3.0] -> <h2> Python 3 </ h2> <pre translate = "no"> <code> import urllib query_parms = {'username': 'stackoverflow', 'password': 'me.me'} encoded_parms = urllib.parse.urlencode (query_parms) .encode ('utf-8') response = urllib.request.urlopen ("https://codecamp.ru/users/login", encoded_parms) response.code # Вывод: 200 response.read () # Вывод: b '<! DOCTYPE html> \ r \ n <html> .... etc '</ code> </ pre> <! - окончательная версия if -> </ div> </ article> <article id = "19298"> <div class = "__ example__title" > Декодировать полученные байты в соответствии с кодировкой типа содержимого </ div> <div class = "__ example__body"> <p> Полученные байты должны быть декодированы с правильной кодировкой символов, чтобы интерпретировать их как текст: </ p> <! - если версия <Python 3.x> [gte 3.0] -> <pre translate = "no"> <code> импорт urllib.request response = urllib.request.urlopen ("http://codecamp.ru/") данные = response.read () encoding = response.info (). get_content_charset () html = data.decode (encoding) </ code> </ pre> <! - окончание версии if -> <! - if version < Python 2.x> [lte 2.7] -> <pre translate = "no"> <code> импорт urllib2 response = urllib2.urlopen ("http://codecamp.ru/") data = response.read () кодировка = response.info (). getencoding () html = данные. декодировать (кодировать) </ code> </ pre> <! - конец версии if -> </ div> </ article> </ div> </ main> </ html>
  • 1

    HTTP POST

    To POST data pass the encoded query arguments as data to urlopen()

    Python 2.x2.7

    Python 2

    import urllib
    query_parms = {'username':'stackoverflow', 'password':'me.me'}
    encoded_parms = urllib.urlencode(query_parms)
    response = urllib.urlopen("https://codecamp.ru/users/login", encoded_parms)
    response.code
    # Output: 200
    response.read()
    # Output: '<!DOCTYPE html>\r\n<html>\r\n<head>\r\n\r\n<title>Log In - Stack Overflow'
    
    Python 3.x3.0

    Python 3

    import urllib
    query_parms = {'username':'stackoverflow', 'password':'me.me'}
    encoded_parms = urllib.parse.urlencode(query_parms).encode('utf-8')
    response = urllib.request.urlopen("https://codecamp.ru/users/login", encoded_parms)
    response.code
    # Output: 200
    response.read()
    # Output: b'<!DOCTYPE html>\r\n<html>....etc'
    
  • 0

    Decode received bytes according to content type encoding

    The received bytes have to be decoded with the correct character encoding to be interpreted as text:

    Python 3.x3.0
    import urllib.request
    
    response = urllib.request.urlopen("https://codecamp.ru/")
    data = response.read()
    
    encoding = response.info().get_content_charset()
    html = data.decode(encoding)
    
    Python 2.x2.7
    import urllib2
    response = urllib2.urlopen("https://codecamp.ru/")
    data = response.read()
    
    encoding = response.info().getencoding()
    html = data.decode(encoding)
    

Синтаксис

Параметры

Примечания