Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Web
  • » Где-то ошибка при загрузке http (urllib..) [RSS Feed]

#1 Июль 10, 2011 17:25:09

bat
От:
Зарегистрирован: 2011-01-02
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Где-то ошибка при загрузке http (urllib..)

Здравствуйте. есть “типа код”, который должен возвращать html страницу по урлу с куками и заголовками. и при этом посылать запрос с нужными нам заголовками. но вот что-то не работает. присылаются кракозябры, вместо html. может кто подскажет, в чем может быть дело

import urllib, urllib2, cookielib

proxies = {
'http' : '127.0.0.1:8118',
'ssl' : '127.0.0.1:8118',
'socks' : '127.0.0.1:9050'
}

user_agents = {
'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11' \
: 50,
'Opera/9.25 (Windows NT 5.1; U; en)' \
: 15,
'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.1.249.1064 Safari/532.5' \
: 30,
'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.12) Gecko/20070731 Ubuntu/dapper-security Firefox/1.5.0.12' \
: 5
}

class atape_http_client(object):
def __init__(self, proxy=None, user_agent=user_agents):
self.cookie_handler = urllib2.HTTPCookieProcessor(cookielib.CookieJar())
self.redirect_handler = urllib2.HTTPRedirectHandler()
self.http_handler = urllib2.HTTPHandler()
self.https_handler = urllib2.HTTPSHandler()

self.opener = urllib2.build_opener(self.http_handler,
self.https_handler,
self.cookie_handler,
self.redirect_handler)

if proxy:
self.proxy_handler = urllib2.ProxyHandler(proxies)
self.opener.add_handler(self.proxy_handler)

self.opener.addheaders = [('User-agent', user_agents),
('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'),
('Accept-Language', 'en-us,en,;q=0.5'),
('Accept-Encoding', 'gzip,deflate'),
('Accept-Charset', 'ISO-8859-1,utf-8;q=0.7,*,q=0.7')]

def request(self, url, params={}, timeout=60):
if params:
params = urllib.urlencode(params)
html = self.opener.open(url, params, timeout)
else:
html = self.opener.open(url)

return html.read()

bot = atape_http_client()
tt=bot.request('http://2ip.ru')

f = open('log', 'w')
f.write(tt)
f.close()



Офлайн

#2 Июль 10, 2011 17:38:57

dimabest
От:
Зарегистрирован: 2009-02-12
Сообщения: 253
Репутация: +  0  -
Профиль   Отправить e-mail  

Где-то ошибка при загрузке http (urllib..)

Убери заголовок ‘Accept-Encoding’, который говорит серверу что ты можешь распаковать данные, сжатые gzip-ом. И “кракозябры” исчезнут



Офлайн

#3 Июль 10, 2011 18:01:06

bat
От:
Зарегистрирован: 2011-01-02
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Где-то ошибка при загрузке http (urllib..)

dimabest
Убери заголовок ‘Accept-Encoding’, который говорит серверу что ты можешь распаковать данные, сжатые gzip-ом. И “кракозябры” исчезнут
оу, спасибо большое)



Офлайн

  • Начало
  • » Web
  • » Где-то ошибка при загрузке http (urllib..)[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version