簡體   English   中英

urllib2.HTTPError:HTTP錯誤400:錯誤的請求

[英]urllib2.HTTPError: HTTP Error 400: Bad Request

我的代碼是這樣的

def translate(self, to_translate, to_langage="auto", langage="auto"):

 '''Return the translation using google translate
    you must shortcut the langage you define (French = fr, English = en, Spanish = es,    etc...)
    if you don't define anything it will detect it or use english by default
    Example:
    print(translate("salut tu vas bien?", "en"))
    hello you alright?'''

    agents = {'User-Agent': "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)"}


    before_trans = 'class="t0">'

    link = "http://translate.google.com/m?hl=%s&sl=%s&q=%s" % (to_langage, langage, urllib.quote(to_translate.encode('utf8')))

    request = urllib2.Request(link, headers=agents)

    page = urllib2.urlopen(request).read()
    result = page[page.find(before_trans) + len(before_trans):]
    result = result.split("<")[0]

    return result

我有這本字典

user_all = {1:{0:[],“您喜歡的5首歌曲”:[u'lethe”,u'suliman',u'converting Vegetarians',u'invasion',u'betrayel'],“您喜歡的2作家':[u'ajdar',u'bulent ersoy'],'Facebook帳戶鏈接':[''],'您最喜歡的3部電影':[u'hobbit',u'hobbit 2',u'hobbit 3 '],“您最喜歡的3位歌手”:[u'infected mushroom',u'shiro sagisu',u'disturbed'],“ Timestamp”:[''],“ Age”:[''],“興趣愛好” :[u'閱讀',u'騎馬',u'tiger狩獵'],'您最喜歡的3位演員/女演員':[u'gerard巴特勒',u'tom hanks',u'jonny deep'],'選擇您喜歡的3種音樂流派”:[u'Blues”,“您喜歡的運動隊”:[''],“性別”:[u'male”],“家鄉”:[u'istanbul”],“部門”:[u'EEE”],“ Twitter帳戶鏈接”:[''],“您的Sehir學生地址”:[u'talhatemiz@std.segir.edu.tr”],“您最喜歡的3個體育分支” :['',``,''],'選擇您喜歡的2種圖書類型':[u'Fantasy,Short Story Collections \\ xa0'],'您喜歡的2種導演':[u'guy riche',u' david o runnell']},2:{0:[],'您的收藏夾 orite 5首歌曲”:[u'Belief',u'在燃燒室中慢舞',u'seni cok istiyorum',u'再喝一杯咖啡',u'simple man'],“您最喜歡的2位作家” :[u'JK羅琳',u'Sabahattin Ali'],'Facebook帳戶鏈接':[u'dgsdg'],“您最喜歡的三部電影”:[u'Hobbit”,u'指環王', u'araba'],“您最喜歡的3位歌手”:[u'John Mayer',u'Yavuz Cetin',u'Led Zeppelin'],“ Timestamp”:[''],“ Age”:[“] ,“愛好”:[u'彈吉他”,u'閱讀書,u'futbol oynamak'],“您最喜歡的3位演員/女演員”:[u'Johnny Depp',u'Natalie Portman',u'Mila Kunis”],“選擇您喜歡的3種音樂類型”:[u'Blues,Indie,Rock'],“您喜歡的運動隊”:[u'dsgg”],“性別”:[u'Male”],“故鄉”:[u'Artvin”],“部門”:[u'EEE”],“ Twitter帳戶鏈接”:[u'sdgsg”],“您的希爾大學學生地址”:[u'Burak Altun”],“您最喜歡的3個體育分支':[u'asd',u'asd',u'as \\ u015ffkndl'],“選擇您喜歡的2種圖書類型”:[u'動作與冒險,科幻小說”,“您最喜歡的2直接 ors':[u'Steven Spielberg',u'Quentin Tarantino']}}

我編碼這個達到每個字

 for i in user_all.values():
     for j in i.values():
          for m in j:
              self.translate(m, to_langage="en", langage="auto")

我收到此錯誤

追溯(最近一次通話):

文件“ /Users/baltun/Documents/workspace/SimSurve/src/Reader/trying_translate.py”,第99行,印刷版read.start_reading()

在start_reading self.translate(m,to_langage =“ zh-cn”,langage =“ auto”)中的文件“ /Users/baltun/Documents/workspace/SimSurve/src/Reader/trying_translate.py”,第92行

在翻譯頁面中,文件“ /Users/baltun/Documents/workspace/SimSurve/src/Reader/trying_translate.py”,第38行= urllib2.urlopen(request).read()

文件“ /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/urllib2.py”,第126行,在urlopen中返回_opener.open(URL,數據,超時)

文件“ /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/urllib2.py”,第397行,以開放式響應= meth(req,response)

在http_response'http'中的文件“ /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/urllib2.py”,第510行,請求,響應,代碼,msg,hdr)

文件“ /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/urllib2.py”,第435行,錯誤返回self._call_chain(* args)

_call_chain結果= func(* args)中的文件“ /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/urllib2.py”,第369行

在http_error_default中的文件“ /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/urllib2.py”第518行中,引發HTTPError(req.get_full_url(),代碼,msg,hdrs,fp)urllib2。 HTTPError:HTTP錯誤400:錯誤的請求

你能幫助我嗎?

# coding: utf8
import urllib
import urllib2

agents = {
    'User-Agent': "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)"}

to_langage, langage, to_translate = 'en', 'fa',  u'سلام بر جهان'

before_trans = 'class="t0">'

link = "http://translate.google.com/m?hl=%s&sl=%s&q=%s" % (to_langage, langage, urllib.quote(to_translate.encode('utf8')))

request = urllib2.Request(link, headers=agents)

page = urllib2.urlopen(request).read()
result = page[page.find(before_trans) + len(before_trans):]
result = result.split("<")[0]

print(result)

Hello World

好的,此示例有效,但是我發現了為什么出現400錯誤。

在您的user_all定義的字典中,有一個字符串u'Yavuz Cetin' ,其中包含Yavu

在土耳其語中, Yavu一詞表示slow ,因此該詞的Google翻譯返回HTTP 400錯誤!

為了解決這個問題,您可能需要在user_all定義的詞典中更改此單詞或與google聯系!

看一下translate.google.com/m?hl=zh-CN&sl=auto&tl=en&ie=UTF-8&prev=_m&q=yavugoogle.com/search?q=google%20translate%20yavu%20400

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM