検索
ホームページバックエンド開発Python チュートリアルリクエストライブラリを使用してPythonで翻訳インターフェースを実装する方法

リクエスト ライブラリの基本的な使い方

インストール

リクエスト ライブラリを Python で使用するには、まず pip を使用してインストールする必要があります。これを行うには、ターミナルで次のコマンドを実行します。

pip install requests

Using

ライブラリがインストールされたら、それを使用して HTTP リクエストを行うことができます。以下は、GET リクエストの作成方法の例です。

import requests

response = requests.get('https://www.baidu.com')
print(response.text)

この例では、リクエスト ライブラリをインポートし、get メソッドを使用して https://www.baidu への GET リクエストを作成します。コム。サーバーの応答は応答変数に保存され、応答テキストをコンソールに出力します。

get メソッドにパラメータを渡して、リクエストにクエリ パラメータを含めることもできます。

import requests

params = {'key1': 'value1', 'key2': 'value2'}
response = requests.get('https://www.example.com', params=params)
print(response.url)

この例では、クエリ パラメータの辞書を get メソッドの params パラメータに渡します。生成された URL にはクエリ パラメーターが含まれており、その URL をコンソールに出力します。

post メソッドを使用して POST リクエストを行うこともできます。

import requests

data = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('https://www.example.com', data=data)
print(response.text)

この例では、データのディクショナリを post メソッドの data パラメータに渡します。データはリクエストの本文で送信され、応答テキストがコンソールに出力されます。

独自の翻訳インターフェイスを開発する

Baidu 翻訳を分析する

Baidu 翻訳アドレスを開き、F12 を押して開発者モードを開き、翻訳済みのテキストを入力します。 「翻訳」をクリックします。下の図を見ると、要求されたアドレスと要求されたパラメータがはっきりとわかります。

リクエストライブラリを使用してPythonで翻訳インターフェースを実装する方法

Baidu Translation が投稿を https://fanyi.baidu.com に送信します。 /v2transapi リクエストでは、送信されるデータの符号のみが常に変化しているため、v2transapi を検索すると、送信したいデータ文字列を通じて署名フィールドが js によって暗号化されていることがわかりました。

リクエストライブラリを使用してPythonで翻訳インターフェースを実装する方法

# Baidu Translation の

js 分析によると、暗号化のキー コードは次のとおりです。

リクエストライブラリを使用してPythonで翻訳インターフェースを実装する方法

# # 呼び出しプロセス全体を理解したので、すべてのパラメータを自分で構築できます。このようにしてコードを書くことができます。

インターフェース コードを記述します

1。リクエストが失敗しないようにするには、ブラウザーのリクエストを模倣し、リクエスト ヘッダーをリクエストに追加する必要があります。サードパーティのライブラリを使用します。

fake_useragent、異なる User-Agent をランダムに生成します。キーコードは次のとおりです:

from fake_useragent import UserAgent
headers = {'User-Agent': UserAgent().random}

2.

sign パラメータを生成します. 暗号化された js コードを理解できないため、python# を直接呼び出します## サードパーティ ライブラリは js コードを実行します。使用する前に execjs ライブラリをインストールする必要があります。次のコードを実行します: <pre class='brush:php;toolbar:false;'>pip3 install PyExecJS</pre> のメソッドこのライブラリの使用も非常に簡単です。たとえば、Baidu の暗号化された

js

コードを抽出し、新しい js ファイルを作成し、その中にコンテンツをコピーしたことはすでに述べました。キー コードは次のとおりです。 <pre class='brush:php;toolbar:false;'> def generate_sign(self,query): try: if os.path.isfile(&quot;./baidu.js&quot;): with open(&quot;./baidu.js&quot;, &amp;#39;r&amp;#39;, encoding=&quot;utf-8&quot;) as f: baidu_js = f.read() ctx = execjs.compile(baidu_js) return ctx.call(&amp;#39;b&amp;#39;, query) except Exception as e: print(e)</pre> まず、js ファイルをキャッシュに読み込み、次に

execjs

を通じてオブジェクトを呼び出します。最後に、js ファイル内のメソッドは、call メソッドを呼び出すことによって実行されます。ここで、bjs に対応するメソッドであり、query は、jsb メソッドのパラメーターです。 呼び出しが成功すると、戻り値は次のようになります:

リクエストライブラリを使用してPythonで翻訳インターフェースを実装する方法3.

token

値を取得し、ソース コードを確認します。 Baidu 翻訳ページの findtoken がページに保存されているため、token.

res = request.get("https://fanyi.baidu.com").content.decode()
token = re.findall(r"token: &#39;(.*)&#39;,", res, re.M)[0]
リクエストライブラリを使用してPythonで翻訳インターフェースを実装する方法4 を取得できます。これまでのところ、すべてのリクエスト パラメータが利用できるようになったので、リクエストの構築を開始できます。コア コードは次のとおりです。

    url = &#39;https://fanyi.baidu.com/v2transapi&#39;
    sign = generate_sign("你好")
    data = {
        "from": "zh",
        "to": &#39;en&#39;,
        "query": "你好",
        "transtype": "translang",
        "simple_means_flag": "3",
        "sign": sign,
        "token": self.token,
        "domain": "common"
    }
    res = requests.post(
        url=url,
        params={"from": "zh", "to": &#39;en&#39;},
        data=data,
        headers = {
            &#39;User-Agent&#39;: UserAgent().random,
        }
    )

    res.json().get("trans_result").get("data")[0].get("dst")

リクエストが成功すると、次の画像が返されます。

リクエストライブラリを使用してPythonで翻訳インターフェースを実装する方法実際の呼び出しを通じて、次のことがわかります。すべてのリクエストが成功するわけではないため、複数のリクエストを作成し、ループ操作を実行し、それがクリアされて成功したときにループから抜け出す必要があります。キー コードは次のとおりです:

        tryTimes = 0
        try:
            while tryTimes < 100:
                res = self.session.post(
                    url=url,
                    params={"from": fromLan, "to": toLan},
                    data=data,
                )
                if "trans_result" in res.text:
                    break
                tryTimes += 1
            return res.json().get("trans_result").get("data")[0].get("dst")

この方法では、Baidu 翻訳インターフェイスを使用して独自の翻訳インターフェイス呼び出しを行うことが完了しました。

Flask

または Fastapi を使用して、独自のニーズに応じて API インターフェイスを開発できます。以下はすべてのコードです<pre class='brush:php;toolbar:false;'>import requests import execjs import os import re import json from loguru import logger from fake_useragent import UserAgent class Baidu_translate: def __init__(self): self.session=request.Session() self.session.headers={ &amp;#39;User-Agent&amp;#39;: UserAgent( ).random, &quot;Host&quot;:&quot;fanyi.baidu.com&quot;, &quot;X-Requested-With&quot;:&quot;XMLHttpRequest&quot;, &quot;sec-ch-ua&quot;:&amp;#39;&quot;Not?A_Brand&quot;;=&quot;8&quot;,&quot;Chromium&quot;;v=&quot;108&quot;,&quot;Microsoft Edge&quot;;V=&quot;108&quot;, &quot;sec-ch-ua-mobile&quot;:&quot;?0&quot;, &quot;Sec-Fetch-Dest&quot;:&quot;document&quot;, &quot;Sec-Fetch-Mode&quot;:&quot;navigate&quot;, &quot;Sec-Fetch-Site&quot;: &quot;same-origin&quot;, &quot;Sec-Fetch-User&quot;:&quot;?1&quot;, &quot;Connection&quot;:&quot;keep-alive&quot;, } self.session.get(&quot;https://fanyi.baidu.com&quot; ) res = self.session.get(&quot;https://fanyi.baidu.com&quot;).content.decode( ) self.token = re.findall(r&quot;token: &amp;#39;(.*)&amp;#39;,&quot;,res,re.M)[0] def generate_sign(self,query): try: if os.path.isfile(&quot;./baidu.js&quot;): with open(&quot;./baidu.js&quot;,&amp;#39;r&amp;#39;,encoding=&quot;utf-8&quot;) as f: baidu_js = f.read( ) ctx = execjs.compile(baidu_js) return ctx.call(&amp;#39;b&amp;#39;,query) except Exception as e: print(e) def lang_detect(self,src: str) -&gt; str: url = &quot;https://fanyi.baidu.com/langdetect&quot; fromLan = self.session.post(url, data={&quot;query&quot;: src}).json()[&quot;lan&quot;] return fromLan def translate(self,query: str, tolan: str = &quot;&quot;, fromLan: str = &quot;&quot;) -&gt; str: if fromLan == &quot;&quot;: fromLan = self.lang_detect(query) if toLan == &quot;&quot;: toLan = &quot;zh&quot; if fromLan != &quot;zh&quot; else &quot;en&quot; url = &amp;#39;https://fanyi.baidu.com/v2transapi&amp;#39; sign = self.generate_sign(query) data = { &quot;from&quot; : fromLan, &quot;to&quot;: toLan, &quot;query&quot;: query, &quot;transtype&quot;:&quot;translang&quot;, &quot;simple_means_flag&quot;:&quot;3&quot;, &quot;sign&quot; : sign, &quot;token&quot;: self.token, &quot;domain&quot;:&quot;common&quot; } tryTimes = 0 try: while tryTimes &lt; 100: res = self.session.post( url=url, params={&quot;from&quot;: fromLan,&quot;to&quot;: toLan}, data=data, ) if &quot;trans_result&quot; in res.text: break tryTimes +=1 return res.json().get(&quot;trans_result&quot;).get(&quot;data&quot;)[0].get(&quot;dst&quot;) except Exception as e: print(e) def test(): url =&amp;#39;https://fanyi.baidu.com/v2transapi&amp;#39; sign = generate_sign(&quot;你好&quot;) data = { &quot;from&quot;:&quot;zh&quot;, &quot;to&quot;:&amp;#39; en&amp;#39;, &quot;query&quot;:&quot;你好&quot;, &quot;transtype&quot;:&quot;translang&quot;, &quot;simple_means_flag&quot;:&quot;3&quot;, &quot;sign&quot;: sign, &quot;token&quot;: self.token, &quot;domain&quot;: &quot;common&quot; } res = requests.post( url=url, params={&quot;from&quot;: &quot;zh&quot;,&quot;to&quot;:&amp;#39;en&amp;#39;}, data=data, headers = { &amp;#39;User-Agent&amp;#39;: UserAgent( ).random, } ) res .json() if _name__ == &quot;__main__&quot;: baidu_tran = Baidu_Translate() sign = baidu_tran.generate_sign(&quot;你好&quot;)</pre>

以上がリクエストライブラリを使用してPythonで翻訳インターフェースを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は亿速云で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Pythonアレイで実行できる一般的な操作は何ですか?Pythonアレイで実行できる一般的な操作は何ですか?Apr 26, 2025 am 12:22 AM

PythonArraysSupportVariousoperations:1)SlicingExtractsSubsets、2)Appending/ExtendingAdddesements、3)inSertingSelementSatspecificpositions、4)remvingingDeletesements、5)sorting/verversingsorder、and6)listenionsionsionsionsionscreatenewlistsebasedexistin

一般的に使用されているnumpy配列はどのようなアプリケーションにありますか?一般的に使用されているnumpy配列はどのようなアプリケーションにありますか?Apr 26, 2025 am 12:13 AM

numpyarraysAressertialentionsionceivationsefirication-efficientnumericalcomputations andDatamanipulation.theyarecrucialindatascience、mashineelearning、物理学、エンジニアリング、および促進可能性への適用性、scaledatiencyを効率的に、forexample、infinancialanalyyy

Pythonのリスト上の配列を使用するのはいつですか?Pythonのリスト上の配列を使用するのはいつですか?Apr 26, 2025 am 12:12 AM

UseanArray.ArrayOverAlistinPythonは、Performance-criticalCode.1)homogeneousdata:araysavememorywithpedelements.2)Performance-criticalcode:Araysofterbetterbetterfornumerumerumericaleperations.3)interf

すべてのリスト操作は配列でサポートされていますか?なぜまたはなぜですか?すべてのリスト操作は配列でサポートされていますか?なぜまたはなぜですか?Apr 26, 2025 am 12:05 AM

いいえ、notallistoperationSaresuptedbyarrays、andviceversa.1)arraysdonotsupportdynamicoperationslikeappendorintorintorinsertizizing、whosimpactsporformance.2)リスト

Pythonリストの要素にどのようにアクセスしますか?Pythonリストの要素にどのようにアクセスしますか?Apr 26, 2025 am 12:03 AM

toaccesselementsinapythonlist、useindexing、negativeindexing、slicing、oriteration.1)indexingstartsat0.2)negativeindexingAcsesess.3)slicingextractStions.4)reterationSuseSuseSuseSuseSeSeS forLoopseCheckLentlentlentlentlentlentlenttodExeror。

Pythonを使用した科学コンピューティングでアレイはどのように使用されていますか?Pythonを使用した科学コンピューティングでアレイはどのように使用されていますか?Apr 25, 2025 am 12:28 AM

Arraysinpython、特にvianumpy、arecrucialinscientificComputing fortheirefficienty andversitility.1)彼らは、fornumericaloperations、data analysis、andmachinelearning.2)numpy'simplementation incensuresfasteroperationsthanpasteroperations.3)arayableminablecickick

同じシステムで異なるPythonバージョンをどのように処理しますか?同じシステムで異なるPythonバージョンをどのように処理しますか?Apr 25, 2025 am 12:24 AM

Pyenv、Venv、およびAnacondaを使用して、さまざまなPythonバージョンを管理できます。 1)Pyenvを使用して、複数のPythonバージョンを管理します。Pyenvをインストールし、グローバルバージョンとローカルバージョンを設定します。 2)VENVを使用して仮想環境を作成して、プロジェクトの依存関係を分離します。 3)Anacondaを使用して、データサイエンスプロジェクトでPythonバージョンを管理します。 4)システムレベルのタスク用にシステムPythonを保持します。これらのツールと戦略を通じて、Pythonのさまざまなバージョンを効果的に管理して、プロジェクトのスムーズな実行を確保できます。

標準のPythonアレイでnumpyアレイを使用することの利点は何ですか?標準のPythonアレイでnumpyアレイを使用することの利点は何ですか?Apr 25, 2025 am 12:21 AM

numpyarrayshaveveraladvantages-averstandardpythonarrays:1)thealmuchfasterduetocベースのインプレンテーション、2)アレモレメモリ効率、特にlargedatasets、および3)それらは、拡散化された、構造化された形成術科療法、

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。