Найти - Пользователи
Полная версия: Проблемы с httplib, urllib
Начало » Network » Проблемы с httplib, urllib
1 2
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…
o7412369815963
добавил в хеадер ‘Content-Type’:'text/html;charset=utf-8', теперь вроде utf-8, но гугл редиректит на другой url, а там формат струницы другой…
zetter
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!
Закомментировал блок (функцию перевода) - добавил - вышеуказанный. Я так понимаю его теперь нужно продублировать? (ввиду того, что перевода на английский нет)?
zetter
После проделанных манипуляций - перевод выдается без тэгов. Но появилась другая проблема - переводиться только английский текст на русский - русский на английский уже не переводиться! В чем сдесь проблема?
dimabest
# 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
zetter
Хоть убейте)) - не работает(((

Т. е. аплет вообще не реагирует.
o7412369815963
zetter
Хоть убейте)) - не работает(((

Т. е. аплет вообще не реагирует.
значит дело в аплете, код выше работает только в реплейс надо вместо replace('<br>','\n') - replace('&lt;br&gt;','\n') написать
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB