Pythonは適切な方法の翻訳を登ります

 

適切な方法で開発者ツールのページの翻訳を開き、リクエストURLとヘッダーセクションに対応するデータを見つけます。

 

インポートurllib.request
 インポートurllib.parse
 インポートJSON 

コンテンツ = INPUT(翻訳するコンテンツを入力してください:

#1 :エラー50 _Oが削除されるが、そうでない場合は、最初にERROR_CODEになり 
、URL = " http://fanyi.youdao.com/翻訳?smartresult = dictの&smartresult =ルール' 

データ = {}
開発ツールは、iとdoctypeをキー不可欠な、ある 
データ[ ' 私は' ]は= コンテンツ
[データ' から' ] = ' AUTO ' 
のデータを[ ' " ] = ' AUTO '
データ[ ' smartresult ' ] = ' 辞書' 
データ[ ' クライアント' ] = ' fanyideskweb ' 
データ[ ' ' ] = ' 15695569180611 ' 
データ[ ' サイン' ] = ' 5b0565493d812bc5e713b895c12d615d ' 
データ[ ' DOCTYPE ' ] = ' JSON ' 
データ[ ' バージョン' ] = ' 2.1 '
データ[ " keyfrom' ] = ' Fanyi.web ' 
DATA [ ' アクション' ] = ' FY_BY_REALTTIME ' 

要求辞書のURL符号化データに、符号化方式の種類とに変換'のUTF-8「型 
データ= urllib.parse.urlencode(データ).encode(UTF-8 

#の結果のURLに応答して要求データ 
応答= urllib.request.urlopen(URL、データ)

読み取るリターン・データ・コンテンツは、データのフォーマット変換のSTRに戻される復号 
HTML応答= .read()。デコード(' UTF-を。8 ' 

#を使用JSON文字列辞書に 
ターゲット= json.loads(HTML) 

キーで結果キー'translateResult' 3-リスト= = 'TGT'で
印刷します" 翻訳結果:%S "%(ターゲット[ ' translateResult ' ] [0] [0] [ ' TGT ' ]))

 

  

これは、適切なマニュアルにアクセスで識別されていないページにたくさん上記の方法が、アクセスコードであるかもしれません。

この時点で、私たちは「を追加することができたUser-Agent」エージェントを。目的は、ユーザーエージェントは、自分の身元を隠す設定することによって達成され、通常の状況下で認識するために、ブラウザのUser-Agentを介して行われます。

 

UAはurllib.request.Request()を呼び出すことで設定します。

 

クラス urllib.request.Request(URL、データ=なし、ヘッダー= {}、origin_req_host =なし、検証不可能= Falseを、方法= なし)

このクラスは、 ある URLリクエストの抽象。

  URLは  、有効なURLを含む文字列でなければなりません。 

  ヘッダーには、  辞書に#headersする必要があります

 

ユーザーエージェントを設定する方法は2つあります。

    ヘッダパラメータを記入、作成1. Requestオブジェクトは、辞書のためのヘッダパラメータ要件(ユーザエージェント情報を含みます)。

    2.在创建Request对象的时候不添加headers参数,在创建完成之后,使用add_header()的方法,添加headers。

import urllib.request
import urllib.parse
import json
import time


while True:
    
    content=input('请输入需要翻译的内容(输入"q!退出程序"):')

    if content=='q!':
        break;

    #_o要去掉,否则会出先error_code:50的报错
    url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
    
    '''
    第一种方法
    head={}
    head['User-Agent']='Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'
    '''
    
    data={}
    #开发者工具里有,i和doctype键不可少
    data['i']=content
    data['from']='AUTO'
    data['to']='AUTO'
    data['smartresult']='dict'
    data['client']='fanyideskweb'
    data['salt']='15695569180611'
    data['sign']='5b0565493d812bc5e713b895c12d615d'
    data['doctype']='json'
    data['version']='2.1'
    data['keyfrom']='fanyi.web'
    data['action']='FY_BY_REALTTIME'

    #将字典类型的请求数据转化为url编码,并将编码类型转变为'utf-8'类型
    data=urllib.parse.urlencode(data).encode('utf-8')

    '''
    第一种方法
    req=urllib.request.Request(url,data,head)
    '''
    #第二种方法设置User Agent
    #创建Request对象
    req=urllib.request.Request(url,data)
    req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36')

    #传入创建好的Request对象
    response=urllib.request.urlopen(req)

    #读取响应信息并解码
    html=response.read().decode('utf-8')

    #使用json将字符串转化成字典
    target=json.loads(html)

    #结果在key='translateResult'的三层列表的key='tgt'中
    print("翻译结果:%s" %(target['translateResult'][0][0]['tgt']))

    #5秒一次
    time.sleep(5)
    

 

おすすめ

転載: www.cnblogs.com/-jiandong/p/11600927.html