Baiduのは、Pythonを書くために翻訳しました

動作環境:Pythonの3.6.0

実際には、今日の目的は、それはPythonで書かれているBaiduの翻訳は、それを行う方法です実際には、このインタフェースを介してアクセスするためのインターフェイスを取得することであるが、中間点の出現は本当に問題ですが、すべてを取り除くために

第1のドライ描画エアコードの後

結果:

 

コード:

# - * -コーディング:UTF-8 - * -

"" "
機能:Baiduの翻訳
ノート:英語が自動的に切り替える
" ""

インポート要求
再インポートする


クラスBaidu_Translate(オブジェクト):
DEF __init __(自己、QUERY_STRING):
self.query_string QUERY_STRING =
self.url_1 =「https://fanyi.baidu.com/sug」
他の側は抗爬虫類を使用しているので#1 self.url =「https://fanyi.baidu.com/v2transapi」#は、ここにこのアドレスを使用することはできません施策、このアドレスはあなたにどのようなデータ与えることはありません人で訪問
= 'https://fanyi.baidu.com/transapi' self.url_0
self.zh_pattern = re.compile( '[\ u4e00- \ u9fa5] +'を)
self.headersは= {
'受け入れる': '* / *'、
'承諾-エンコード': 'GZIP、DEFLATE'、
'受け入れる-言語': 'CN-ZH、ZH; Q = 0.9'、
'接続 ': 『キープ - 』生きています、
'Content-Typeの': 'ファイルアプリケーション/ x-www-form-urlencodedで;のcharset = UTF-8'、
'User--エージェント':「のMozilla / 5.0(Windows NTの10.0; WOW64)のAppleWebKit / 537.36(KHTML、ヤモリなど)クローム/ 72.0.3626.121サファリ/ 537.36「
『X-要求-With-』:」のXMLHttpRequest」、
}

DEF get_post_data(自己):
『』 "
パラメータをアップロードするPOSTリクエストを取得し、入力の種類を判別して返される
:リターン:検索語句
「」「
IF re.search(パターン= self.zh_pattern、ストリング= self.query_string):#入力は、中国のためにそれが決定され、中国語含まその入力
{リターン
」から「:」ZH「
」「に: "EN"、
"KW":self.query_string、#1 URL_1キーワードファジークエリ
"クエリ":self.query_string、#1 url_0正確なクエリキーワード
}
他:
リターン{
"EN"、 "から"
、 "まで": "ZH"、
"KW":self.query_string、#1 URL_1あいまい検索キーワード
"クエリ":self.query_string、#正確なキーワードクエリurl_0
}

DEFのrequest_translate(自己):
"" "
BaiduのJSONデータへの要求
:リターン:百度への要求JSONデータ
"" "
データ= self.get_post_data()
してみてください。
response_0 = requests.request(方法=" POST」、URL = self.url_0、ヘッダ= self.headers、データ=データ).json()
例外を除い:#任意のは、データ処理の例外要求された
response_0 = ''
試し
response_1 = requests.request(方法= "POST"、URL = self.url_1、ヘッダ= self.headers、データ=データ).json()
例外を除い:#のために任意の例外処理データ要求が
response_1 =「」
戻りresponse_0、response_1

デフparse_translate_data(自己
):""」
データ解析、コンテンツ解析要求出力に翻訳
:戻り:なし
"" "
response_0 = self.request_translate()[0]
response_1 = self.request_translate()[1]
#= response_0アイテム
response_0 IF:
商品= response_0。 ( 'データ')[0]に.get( 'DST')GET
(項目、 'キーワード::'、self.query_string、 '\ T'、 '翻訳')印刷
response_1場合:
データ= response_1.getを( 'データ「)
を印刷()
内のアイテムのデータのための[:1]:長さはここで、一般的に5位でのみ、その解釈保持
プリント(」キーワード:\さt 「フォーマット(キー= item.get(」[する{キー}] K ')))
プリント('値:\ T \ T [{値}] 'フォーマット(item.get値=(' V ')))
プリント()
プリント(response_1.get('データ「))


メインDEF():
"" "
主な機能
:戻る:なし
「」 "
真の中:
試し:
INPUTをquery_keywords =(「」「あなたが翻訳したい内容を入力してください[4 『0』の終了を入力します]:」「」)
あなたは4「0」を入力した場合#:query_keywords == IF「0000」終了アプレット
プリント( 'あなたが正常にBaiduの翻訳を終了している########## ##########')
BREAK
他:
百度= Baidu_Translate(QUERY_STRING = query_keywords)
baidu.parse_translate_dataを()
E AS例外を除い:
印刷( 'リクエストエラー、もう一度試してください'、e.args)


:__name__は== '__main__' IF
メイン()
------------------- -

おすすめ

転載: www.cnblogs.com/ly570/p/11007567.html