Уведомления

Группа в Telegram: @pythonsu

#1 Март 31, 2010 03:06:40

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Проблемы с httplib, urllib

у меня работает так

# coding: utf8

import urllib
import httplib
import re

def translate(text):
params={"ie":"UTF-8", "text":text,
"sl":'en', "tl":'ru'}
params=urllib.urlencode(params)
headers={"Content-Length":"%d" % len(params)}

connection=httplib.HTTPConnection("translate.google.com")
connection.request("POST", "/translate_t", params, headers)
response=connection.getresponse()
res=response.read().decode('koi8-r')

return re.findall(r'<textarea name=utrans[^<>]*">([^<>]*)</textarea>',res)[0].replace('&lt;br&gt;','\n')

print translate('Hello world!\nChecking the translation.')
результат
Привет мир!
Проверка правильности перевода.
только почему гугл присылает в кодировке koi8-r? может в хеадере httplib указано koi8…

Отредактировано (Март 31, 2010 03:14:45)

Офлайн

#2 Март 31, 2010 03:33:45

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Проблемы с httplib, urllib

добавил в хеадер ‘Content-Type’:'text/html;charset=utf-8', теперь вроде utf-8, но гугл редиректит на другой url, а там формат струницы другой…

Офлайн

#3 Март 31, 2010 10:58:15

zetter
От:
Зарегистрирован: 2010-03-26
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемы с httplib, urllib

o7412369815963
у меня работает так
# coding: utf8

import urllib
import httplib
import re

def translate(text):
params={"ie":"UTF-8", "text":text,
"sl":'en', "tl":'ru'}
params=urllib.urlencode(params)
headers={"Content-Length":"%d" % len(params)}

connection=httplib.HTTPConnection("translate.google.com")
connection.request("POST", "/translate_t", params, headers)
response=connection.getresponse()
res=response.read().decode('koi8-r')

return re.findall(r'<textarea name=utrans[^<>]*">([^<>]*)</textarea>',res)[0].replace('&lt;br&gt;','\n')

print translate('Hello world!\nChecking the translation.')
результат
Привет мир!
Проверка правильности перевода.
только почему гугл присылает в кодировке koi8-r? может в хеадере httplib указано koi8…
По поводу кодировки - незнаю, т.е. пробовал массу вариантов - корректно работает только так! с koi8-r!
Закомментировал блок (функцию перевода) - добавил - вышеуказанный. Я так понимаю его теперь нужно продублировать? (ввиду того, что перевода на английский нет)?



Офлайн

#4 Апрель 1, 2010 15:01:40

zetter
От:
Зарегистрирован: 2010-03-26
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемы с httplib, urllib

После проделанных манипуляций - перевод выдается без тэгов. Но появилась другая проблема - переводиться только английский текст на русский - русский на английский уже не переводиться! В чем сдесь проблема?



Офлайн

#5 Апрель 2, 2010 12:30:09

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

Проблемы с httplib, urllib

# coding: utf-8

import urllib
import urllib2
import re

HEADERS = {
'User-Agent': 'Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'ru,en-us;q=0.7,en;q=0.3',
'Accept-Charset': 'utf-8;q=0.7,*;q=0.7'
}

def translate(text, sl, tl):
params = {
'hl': '',
'ie': 'UTF-8',
'text': text,
'sl': sl,
'tl': tl
}
url = 'http://translate.google.com/translate_t?'
req = urllib2.Request(url + urllib.urlencode(params), headers=HEADERS)
page = urllib2.urlopen(req).read()

return re.findall(r'<textarea name=utrans[^<>]*">([^<>]*)</textarea>', page)[0].replace('<br>','\n')

print translate('Все работает', 'ru', 'en')
All works



Офлайн

#6 Апрель 2, 2010 16:13:35

zetter
От:
Зарегистрирован: 2010-03-26
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемы с httplib, urllib

Хоть убейте)) - не работает(((

Т. е. аплет вообще не реагирует.



Отредактировано (Апрель 2, 2010 16:45:44)

Офлайн

#7 Апрель 3, 2010 12:33:39

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Проблемы с httplib, urllib

zetter
Хоть убейте)) - не работает(((

Т. е. аплет вообще не реагирует.
значит дело в аплете, код выше работает только в реплейс надо вместо replace('<br>','\n') - replace('&lt;br&gt;','\n') написать

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version