>> from http. client import HTTPConnection >>> from urllib. 0", "Accept": "text/html, text/plain, application/xml", "Accept-Language": "ru, ru-RU", "Accept-Charset": "">
Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Обмен данными по протоколу httpСодержание книги
Поиск на нашем сайте >>> from http.client import HTTPConnection >>> con = HTTPConnection("test1.ru") >>> con2 = HTTPConnection("test1.ru", 80) >>> con3 = HTTPConnection("test1.ru:80")
Листинг 21.9. Отправка данных методом GET >>> from http.client import HTTPConnection >>> from urllib.parse import urlencode >>> data = urlencode({"color": "Красный", "var": 15}, encoding="cp1251") >>> headers = { "User-Agent": "MySpider/1.0", "Accept": "text/html, text/plain, application/xml", "Accept-Language": "ru, ru-RU", "Accept-Charset": "windows-1251", "Referer": "/index.php" } >>> con = HTTPConnection("test1.ru") >>> con.request("GET", "/testrobots.php?%s" % data, headers=headers) >>> result = con.getresponse() # Создаем объект результата >>> print(result.read().decode("cp1251")) # Читаем данные ... Фрагмент опущен... >>> con.close() # Закрываем объект соединения
Листинг 21.10. Отправка данных методом POST >>> from http.client import HTTPConnection >>> from urllib.parse import urlencode >>> data = urlencode({"color": "Красный", "var": 15}, encoding="cp1251") >>> headers = { "User-Agent": "MySpider/1.0", "Accept": "text/html, text/plain, application/xml", "Accept-Language": "ru, ru-RU", "Accept-Charset": "windows-1251", "Content-Type": "application/x-www-form-urlencoded", "Referer": "/index.php" } >>> con = HTTPConnection("test1.ru") >>> con.request("POST", "/testrobots.php", data, headers=headers) >>> result = con.getresponse() # Создаем объект результата >>> print(result.read().decode("cp1251")) ... Фрагмент опущен... >>> con.close()
>>> result.getheader("Content-Type") 'text/plain; charset=windows-1251' >>> print(result.getheader("Content-Types")) None >>> result.getheader("Content-Types", 10)
>>> result.getheaders() [('Date', 'Mon, 27 Apr 2015 13:33:21 GMT'), ('Server', 'Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8d PHP/5.2.4'), ('X-Powered-By', 'PHP/5.2.4'), ('Content-Length', '422'), ('Content-Type', 'text/plain; charset=windows-1251')]
>>> dict(result.getheaders()) {'Date': 'Mon, 27 Apr 2015 13:33:21 GMT', 'Content-Length': '422', 'X-Powered-By': 'PHP/5.2.4', 'Content-Type': 'text/plain; charset=windows-1251', 'Server': 'Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8d PHP/5.2.4'}
>>> result.status
>>> result.reason # При коде 200 'OK' >>> result.reason # При коде 302 'Moved Temporarily'
>>> result.version # Протокол HTTP/1.1
>>> print(result.msg) Date: Mon, 27 Apr 2015 13:33:21 GMT Server: Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8d PHP/5.2.4 X-Powered-By: PHP/5.2.4 Content-Length: 422 Content-Type: text/plain; charset=windows-1251
>>> result.msg.as_string() 'Date: Mon, 27 Apr 2015 13:33:21 GMT\nServer: Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8d PHP/5.2.4\nX-Powered-By: PHP/5.2.4\nContent-Length: 422\nContent-Type: text/plain; charset=windows-1251\n\n'
>>> result.msg.items() [('Date', 'Mon, 27 Apr 2015 13:33:21 GMT'), ('Server', 'Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8d PHP/5.2.4'), ('X-Powered-By', 'PHP/5.2.4'), ('Content-Length', '422'), ('Content-Type', 'text/plain; charset=windows-1251')]
>>> result.msg.keys() ['Date', 'Server', 'X-Powered-By', 'Content-Length', 'Content-Type']
>>> result.msg.values() ['Mon, 27 Apr 2015 13:33:21 GMT', 'Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8d PHP/5.2.4', 'PHP/5.2.4', '422', 'text/plain; charset=windows-1251']
>>> result.msg.get("X-Powered-By") 'PHP/5.2.4' >>> print(result.msg.get("X-Powered-By2")) None >>> result.msg.get("X-Powered-By2", failobj=10)
>>> result.msg.get_all("X-Powered-By") ['PHP/5.2.4']
>>> result.msg.get_content_type() 'text/plain'
>>> result.msg.get_content_maintype() 'text'
>>> result.msg.get_content_subtype() 'plain' >>> result.msg.get_content_charset() 'windows-1251'
Листинг 21.11. Отправка запроса методом HEAD >>> from http.client import HTTPConnection >>> headers = { "User-Agent": "MySpider/1.0", "Accept": "text/html, text/plain, application/xml", "Accept-Language": "ru, ru-RU", "Accept-Charset": "windows-1251", "Referer": "/index.php" } >>> con = HTTPConnection("test1.ru") >>> con.request("HEAD", "/testrobots.php", headers=headers) >>> result = con.getresponse() # Создаем объект результата >>> print(result.msg) Date: Mon, 27 Apr 2015 13:39:54 GMT Server: Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8d PHP/5.2.4 X-Powered-By: PHP/5.2.4 Content-Type: text/plain; charset=windows-1251
>>> result.read() # Данные не передаются, только заголовки! b'' >>> con.close() 21.6. Обмен данными с помощью модуля urllib.request >>> from urllib.request import urlopen >>> res = urlopen("http://test1.ru/testrobots.php") >>> print(res.read(34).decode("cp1251")) Название робота: Python-urllib/3.4 >>> print(res.read().decode("cp1251")) ... Фрагмент опущен... >>> res.read() b''
>>> res = urlopen("http://test1.ru/testrobots.php") >>> print(res.readline().decode("cp1251")) Название робота: Python-urllib/3.4
>>> res = urlopen("http://test1.ru/testrobots.php") >>> res.readlines(3) [b'\xcd\xe0\xe7\xe2\xe0\xed\xe8\xe5 \xf0\xee\xe1\xee\xf2\xe0: Python-urllib/3.4\n'] >>> res.readlines() ... Фрагмент опущен... >>> res.readlines() []
>>> res = urlopen("http://test1.ru/testrobots.php") >>> for line in res: print(line)
>>> res = urlopen("http://test1.ru/testrobots.php") >>> info = res.info() >>> info.items() [('Date', 'Mon, 27 Apr 2015 13:55:25 GMT'), ('Server', 'Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8d PHP/5.2.4'), ('X-Powered-By', 'PHP/5.2.4'), ('Content-Length', '288'), ('Connection', 'close'), ('Content-Type', 'text/plain; charset=windows-1251')] >>> info.get("Content-Type") 'text/plain; charset=windows-1251' >>> info.get_content_type(), info.get_content_charset() ('text/plain', 'windows-1251') >>> info.get_content_maintype(), info.get_content_subtype() ('text', 'plain')
>>> res.code, res.msg (200, 'OK')
Листинг 21.12. Отправка данных методами GET и POST >>> from urllib.request import urlopen >>> from urllib.parse import urlencode >>> data = urlencode({"color": "Красный", "var": 15}, encoding="cp1251") >>> # Отправка данных методом GET >>> url = "http://test1.ru/testrobots.php?" + data >>> res = urlopen(url) >>> print(res.read(34).decode("cp1251")) Название робота: Python-urllib/3.4 >>> res.close() >>> # Отправка данных методом POST >>> url = " http://test1.ru/testrobots.php" >>> res = urlopen(url, data.encode("cp1251")) >>> print(res.read().decode("cp1251")) ... Фрагмент опущен... >>> res.close()
Листинг 21.13. Использование класса Request >>> from urllib.request import urlopen, Request >>> from urllib.parse import urlencode >>> headers = { "User-Agent": "MySpider/1.0", "Accept": "text/html, text/plain, application/xml", "Accept-Language": "ru, ru-RU", "Accept-Charset": "windows-1251", "Referer": "/index.php" } >>> data = urlencode({"color": "Красный", "var": 15}, encoding="cp1251") >>> # Отправка данных методом GET >>> url = "http://test1.ru/testrobots.php?" + data >>> request = Request(url, headers=headers) >>> res = urlopen(request) >>> print(res.read(29).decode("cp1251")) Название робота: MySpider/1.0 >>> res.close() >>> # Отправка данных методом POST >>> url = "http://test1.ru/testrobots.php" >>> request = Request(url, data.encode("cp1251"), headers=headers) >>> res = urlopen(request) >>> print(res.read().decode("cp1251")) ... Фрагмент опущен... >>> res.close() Определение кодировки <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
c:\python34\scripts\pip install chardet
>>> import chardet >>> chardet.__version__ '2.3.0'
Листинг 21.14. Пример определения кодировки >>> import chardet >>> chardet.detect(bytes("Строка", "cp1251")) {'confidence': 0.99, 'encoding': 'windows-1251'} >>> chardet.detect(bytes("Строка", "koi8-r")) {'confidence': 0.99, 'encoding': 'KOI8-R'} >>> chardet.detect(bytes("Строка", "utf-8")) {'confidence': 0.99, 'encoding': 'utf-8'}
Листинг 21.15. Пример использования класса UniversalDetector from chardet.universaldetector import UniversalDetector ud = UniversalDetector() # Создаем объект for line in open("file.txt", "rb"): ud.feed(line) # Передаем текущую строку if ud.done: break # Прерываем цикл, если done == True ud.close() # Закрываем объект print(ud.result) # Выводим результат input() Сжатие данных
|
||
|
Последнее изменение этой страницы: 2016-06-23; просмотров: 453; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.156 (0.007 с.) |