Уведомления

Группа в Telegram: @pythonsu

#1 Май 22, 2016 12:33:16

Iskatel
Зарегистрирован: 2015-07-29
Сообщения: 291
Репутация: +  3  -
Профиль   Отправить e-mail  

Как засунуть данные в Urllib или mechanize?

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

Соответственно принялась сырая “портянка”. Вобщемто вебстраница, но со своими плюшками типа “Transfer-Encoding: chunked”. Я по спецификациям все это разобрал, но было крайне неудобно…

Соответственно появилась идея: а нельзя ли как нибудь этот сырой ответ засунуть в Urllib или mechanize, чтоб они сами и “расчанкивали”, и заголовок с куками по полочкам разложили? Погуглив, ничего подобного не нашел…

Отредактировано Iskatel (Май 22, 2016 12:50:21)

Офлайн

#2 Май 22, 2016 22:03:09

ivsatel
Зарегистрирован: 2014-12-06
Сообщения: 18
Репутация: +  1  -
Профиль   Отправить e-mail  

Как засунуть данные в Urllib или mechanize?

Так?

#! /usr/bin/env python3
# -*- coding: utf-8 -*-
import http.cookiejar
import urllib.request
MY_COOKIE = urllib.request.HTTPCookieProcessor(http.cookiejar.CookieJar(http.cookiejar.DefaultCookiePolicy(rfc2965=True,strict_ns_domain=http.cookiejar.DefaultCookiePolicy.DomainStrict,blocked_domains=["ads.net", ".ads.net"])))
a = 'http://www.dfm.ru/listen/'
dfm_opener = urllib.request.build_opener(MY_COOKIE)
dfm_opener.addheaders = [('Host', 'www.dfm.ru'), ('User-agent', 'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:46.0) Gecko/20100101 Firefox/46.0')]
with dfm_opener.open(a) as dfm_http:
    http_source = dfm_http.read().decode('utf-8-sig', errors='ignore')
print(http_source)

Отредактировано ivsatel (Май 22, 2016 22:59:29)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version