Inhaltsverzeichnis
Grundlegende Verwendung der Anforderungsbibliothek
Installation
Using
Entwickeln Sie Ihre eigene Übersetzungsschnittstelle
Analysieren Sie die Baidu-Übersetzung
写接口代码
Heim Backend-Entwicklung Python-Tutorial So verwenden Sie die Anforderungsbibliothek, um die Übersetzungsschnittstelle in Python zu implementieren

So verwenden Sie die Anforderungsbibliothek, um die Übersetzungsschnittstelle in Python zu implementieren

May 14, 2023 pm 10:13 PM
python request

Grundlegende Verwendung der Anforderungsbibliothek

Installation

Um die Anforderungsbibliothek in Python verwenden zu können, müssen Sie sie zunächst mit pip installieren. Sie können dies tun, indem Sie den folgenden Befehl im Terminal ausführen:

pip install requests
Nach dem Login kopieren

Using

Nach der Installation der Bibliothek können Sie damit HTTP-Anfragen stellen. Hier ist ein Beispiel dafür, wie man eine GET-Anfrage stellt:

import requests

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

In diesem Beispiel importieren wir die Anforderungsbibliothek und verwenden dann die get-Methode, um eine GET-Anfrage an https://www.baidu.com zu stellen. Die Antwort des Servers wird in der Antwortvariablen gespeichert und wir geben den Antworttext an die Konsole aus.

Sie können auch Parameter an die get-Methode übergeben, um Abfrageparameter in die Anfrage einzuschließen:

import requests

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

In diesem Beispiel übergeben wir ein Wörterbuch mit Abfrageparametern an den params-Parameter der get-Methode. Die generierte URL enthält Abfrageparameter und wir geben die URL an die Konsole aus.

Sie können auch die Post-Methode verwenden, um POST-Anfragen zu stellen:

import requests

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

In diesem Beispiel übergeben wir ein Wörterbuch mit Daten an den Datenparameter der Post-Methode. Die Daten werden im Hauptteil der Anfrage gesendet und wir geben den Antworttext an die Konsole aus.

Entwickeln Sie Ihre eigene Übersetzungsschnittstelle

Analysieren Sie die Baidu-Übersetzung

Öffnen Sie die Baidu-Übersetzungsadresse, drücken Sie dann F12, um den Entwicklermodus zu öffnen, geben Sie den übersetzten Inhalt ein, klicken Sie auf Übersetzen, Sie können ihn deutlich durchschauen das Bild unten Angeforderte Adresse und angeforderte ParameterF12打开开发者模式,输入翻译的内容,点击翻译,通过下图,可以清楚看到请求的地址和请求的参数

So verwenden Sie die Anforderungsbibliothek, um die Übersetzungsschnittstelle in Python zu implementieren

百度翻译通过向https://fanyi.baidu.com/v2transapi发送post请求,发送的数据中只有sign是不断变化的,搜索v2transapi发现sign字段是通过js通过你要发送的数据字符串进行加密得到的。

So verwenden Sie die Anforderungsbibliothek, um die Übersetzungsschnittstelle in Python zu implementieren

通过百度翻译的js分析得出加密的关键代码如下:

So verwenden Sie die Anforderungsbibliothek, um die Übersetzungsschnittstelle in Python zu implementieren

现在已经搞清楚了整个调用的流程,所有的参数都可以自己构造。这样就可以写代码了。

写接口代码

1、为了防止请求失败,需要模仿浏览器请求,在请求时加上请求头,我们采用fake_useragent这个第三方库,随机生成不同的User-Agent。关键代码如下:

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

2、生成sign参数,由于加密的js代码我们看不明白,直接调用python的第三方库执行js代码,使用前需要安装execjs库,执行如下的代码:

pip3 install PyExecJS
Nach dem Login kopieren

这个库使用方法也很简单,例如,上面我们已经把百度的加密js代码已经提取出来了,并新建一个js文件,把内容复制进去。关键代码如下:

    def generate_sign(self,query):
        try:
            if os.path.isfile("./baidu.js"):
                with open("./baidu.js", 'r', encoding="utf-8") as f:
                    baidu_js = f.read()
            ctx = execjs.compile(baidu_js)
            return ctx.call('b', query)
        except Exception as e:
            print(e)
Nach dem Login kopieren

先把js文件读到缓存中,再通过execjs调用该对象。最后通过调用call方法执行js文件的里面的方法,其中b是对应js的方法,queryjsb方法的参数。

调用成功后,返回如下:

So verwenden Sie die Anforderungsbibliothek, um die Übersetzungsschnittstelle in Python zu implementieren

3、获取token值,通过观察百度翻译页面的源码,发现token是存放在页面中的,这样我们就可以通过请求页面获取到token.

So verwenden Sie die Anforderungsbibliothek, um die Übersetzungsschnittstelle in Python zu implementieren

res = request.get("https://fanyi.baidu.com").content.decode()
token = re.findall(r"token: '(.*)',", res, re.M)[0]
Nach dem Login kopieren

4、到目前为止所有的请求参数已经有了,这样我们就可以开始构造请求。核心代码如下:

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

    res.json().get("trans_result").get("data")[0].get("dst")
Nach dem Login kopieren

请求成功后,会返回如下图:

So verwenden Sie die Anforderungsbibliothek, um die Übersetzungsschnittstelle in Python zu implementieren

通过实际的调用中发现不是每次请求成功的,所以需要多次进行请求,通过一个循环操作,当清楚成功就跳出循环,关键代码如下:

        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")
Nach dem Login kopieren

这样我们就已经完成利用百度翻译接口,做成自己的翻译接口调用了。可以根据自己的需求采用FlaskFastapi

Wie verwendet Python die Anforderungsbibliothek, um „Implementieren Sie die Übersetzungsschnittstelle“ />🎜🎜Baidu Translation sendet eine Post-Anfrage an https://fanyi.baidu.com/v2transapi. Nur das Vorzeichen in den gesendeten Daten ändert sich ständig. Durchsuchen Sie v2transapi und stellen Sie fest, dass das Vorzeichenfeld die Daten sind Zeichenfolge, die Sie über js senden möchten. Durch Verschlüsselung erhalten. 🎜🎜<img src=🎜 🎜über Baidu Translate Die js-Analyse zeigt, dass der Schlüsselcode für die Verschlüsselung wie folgt lautet: 🎜🎜🎜🎜Jetzt haben wir den gesamten Aufrufprozess herausgefunden und alle Parameter können selbst erstellt werden. Auf diese Weise können Sie Code schreiben. 🎜🎜Schnittstellencode schreiben🎜🎜1. Um Anforderungsfehler zu verhindern, müssen wir Browseranforderungen nachahmen und Anforderungsheader hinzufügen, wenn wir Anforderungen stellen. Wir verwenden die Drittanbieterbibliothek fake_useragent, um zufällig verschiedene < zu generieren code>Benutzeragent. Der Schlüsselcode lautet wie folgt: 🎜
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={
            &#39;User-Agent&#39;: UserAgent( ).random,
            "Host":"fanyi.baidu.com",
            "X-Requested-With":"XMLHttpRequest",
            "sec-ch-ua":&#39;"Not?A_Brand";="8","Chromium";v="108","Microsoft Edge";V="108",
            "sec-ch-ua-mobile":"?0",
            "Sec-Fetch-Dest":"document",
            "Sec-Fetch-Mode":"navigate",
            "Sec-Fetch-Site": "same-origin",
            "Sec-Fetch-User":"?1",
            "Connection":"keep-alive",
        }
        
        self.session.get("https://fanyi.baidu.com" )
        res = self.session.get("https://fanyi.baidu.com").content.decode( )
        self.token = re.findall(r"token: &#39;(.*)&#39;,",res,re.M)[0]
        
    def generate_sign(self,query):
        try:
            if os.path.isfile("./baidu.js"):
                with open("./baidu.js",&#39;r&#39;,encoding="utf-8") as f:
                    baidu_js = f.read( )
            ctx = execjs.compile(baidu_js)
            return ctx.call(&#39;b&#39;,query)
        except Exception as e:
            print(e)

   def lang_detect(self,src: str) -> str:
       url = "https://fanyi.baidu.com/langdetect"
       fromLan = self.session.post(url, data={"query": src}).json()["lan"]
       return fromLan

   def translate(self,query: str, tolan: str = "", fromLan: str = "") -> str:
       
       if fromLan == "":
           fromLan = self.lang_detect(query)
           
       if toLan == "":
           toLan = "zh" if fromLan != "zh" else "en"
           
       url = &#39;https://fanyi.baidu.com/v2transapi&#39;
       sign = self.generate_sign(query)
       data = {
           "from" : fromLan,
           "to": toLan,
           "query": query,
           "transtype":"translang",
           "simple_means_flag":"3",
           "sign" : sign,
           "token": self.token,
           "domain":"common"
       }
       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")
    except Exception as e:
        print(e)
              
def test():
    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()
    
if _name__ == "__main__":
    baidu_tran = Baidu_Translate()
    sign = baidu_tran.generate_sign("你好")
Nach dem Login kopieren
🎜2. Da wir den verschlüsselten js-Code nicht verstehen können, rufen wir den Drittanbieter von python direkt auf Die Bibliothek führt js-Code aus. Sie müssen die execjs-Bibliothek vor der Verwendung installieren. Führen Sie den folgenden Code aus: 🎜rrreee🎜Die Methode zur Verwendung dieser Bibliothek ist ebenfalls Sehr einfach. Oben haben wir beispielsweise den verschlüsselten js-Code eingefügt, eine neue js-Datei erstellt und den Inhalt hineinkopiert . Der Schlüsselcode lautet wie folgt: 🎜rrreee🎜Lesen Sie zuerst die js-Datei in den Cache und rufen Sie dann das Objekt über execjs auf. Schließlich wird die Methode in der Datei js durch Aufrufen der Methode call ausgeführt, wobei b die Methode ist, die js entspricht. code>, query ist der Parameter der b-Methode in js. 🎜🎜Nachdem der Anruf erfolgreich war, lautet die Rückgabe wie folgt:🎜🎜Anleitung Verwenden Sie die Anforderungsbibliothek, um die Übersetzung in der Python-Schnittstelle zu implementieren > wird auf der Seite gespeichert, sodass wir die Seite Get <code>token</code> anfordern können.🎜🎜<img src=🎜rrreee🎜4. Bisher sind alle Anforderungsparameter verfügbar, sodass wir mit der Erstellung der Anforderung beginnen können. Der Kerncode lautet wie folgt: 🎜rrreee🎜Nach erfolgreicher Anfrage wird das folgende Bild zurückgegeben: 🎜🎜 Wie verwendet Python die Anforderungsbibliothek, um die Übersetzungsschnittstelle zu implementieren?“ />🎜🎜Durch den tatsächlichen Aufruf wird festgestellt, dass nicht jede Anforderung erfolgreich ist, sodass mehrere Anforderungen über eine Schleifenoperation gestellt werden müssen. Wenn klar ist, dass es erfolgreich ist, wird die Schleife übersprungen. Der Schlüsselcode lautet wie folgt: 🎜rrreee🎜Auf diese Weise haben wir die Verwendung der Baidu-Übersetzungsschnittstelle abgeschlossen, um unseren eigenen Übersetzungsschnittstellenaufruf durchzuführen. Mit <code>Flask</code> oder <code>Fastapi</code> können Sie API-Schnittstellen nach Ihren eigenen Bedürfnissen entwickeln. Nachfolgend finden Sie alle Codes 🎜rrreee

Das obige ist der detaillierte Inhalt vonSo verwenden Sie die Anforderungsbibliothek, um die Übersetzungsschnittstelle in Python zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP und Python: Verschiedene Paradigmen erklärt PHP und Python: Verschiedene Paradigmen erklärt Apr 18, 2025 am 12:26 AM

PHP ist hauptsächlich prozedurale Programmierung, unterstützt aber auch die objektorientierte Programmierung (OOP). Python unterstützt eine Vielzahl von Paradigmen, einschließlich OOP, funktionaler und prozeduraler Programmierung. PHP ist für die Webentwicklung geeignet, und Python eignet sich für eine Vielzahl von Anwendungen wie Datenanalyse und maschinelles Lernen.

Wählen Sie zwischen PHP und Python: Ein Leitfaden Wählen Sie zwischen PHP und Python: Ein Leitfaden Apr 18, 2025 am 12:24 AM

PHP eignet sich für Webentwicklung und schnelles Prototyping, und Python eignet sich für Datenwissenschaft und maschinelles Lernen. 1.PHP wird für die dynamische Webentwicklung verwendet, mit einfacher Syntax und für schnelle Entwicklung geeignet. 2. Python hat eine kurze Syntax, ist für mehrere Felder geeignet und ein starkes Bibliotheksökosystem.

Kann gegen Code in Windows 8 ausgeführt werden Kann gegen Code in Windows 8 ausgeführt werden Apr 15, 2025 pm 07:24 PM

VS -Code kann unter Windows 8 ausgeführt werden, aber die Erfahrung ist möglicherweise nicht großartig. Stellen Sie zunächst sicher, dass das System auf den neuesten Patch aktualisiert wurde, und laden Sie dann das VS -Code -Installationspaket herunter, das der Systemarchitektur entspricht und sie wie aufgefordert installiert. Beachten Sie nach der Installation, dass einige Erweiterungen möglicherweise mit Windows 8 nicht kompatibel sind und nach alternativen Erweiterungen suchen oder neuere Windows -Systeme in einer virtuellen Maschine verwenden müssen. Installieren Sie die erforderlichen Erweiterungen, um zu überprüfen, ob sie ordnungsgemäß funktionieren. Obwohl VS -Code unter Windows 8 möglich ist, wird empfohlen, auf ein neueres Windows -System zu upgraden, um eine bessere Entwicklungserfahrung und Sicherheit zu erzielen.

Ist die VSCODE -Erweiterung bösartig? Ist die VSCODE -Erweiterung bösartig? Apr 15, 2025 pm 07:57 PM

VS -Code -Erweiterungen stellen böswillige Risiken dar, wie das Verstecken von böswilligem Code, das Ausbeutetieren von Schwachstellen und das Masturbieren als legitime Erweiterungen. Zu den Methoden zur Identifizierung böswilliger Erweiterungen gehören: Überprüfung von Verlegern, Lesen von Kommentaren, Überprüfung von Code und Installation mit Vorsicht. Zu den Sicherheitsmaßnahmen gehören auch: Sicherheitsbewusstsein, gute Gewohnheiten, regelmäßige Updates und Antivirensoftware.

Kann Visual Studio -Code in Python verwendet werden Kann Visual Studio -Code in Python verwendet werden Apr 15, 2025 pm 08:18 PM

VS -Code kann zum Schreiben von Python verwendet werden und bietet viele Funktionen, die es zu einem idealen Werkzeug für die Entwicklung von Python -Anwendungen machen. Sie ermöglichen es Benutzern: Installation von Python -Erweiterungen, um Funktionen wie Code -Abschluss, Syntax -Hervorhebung und Debugging zu erhalten. Verwenden Sie den Debugger, um Code Schritt für Schritt zu verfolgen, Fehler zu finden und zu beheben. Integrieren Sie Git für die Versionskontrolle. Verwenden Sie Tools für die Codeformatierung, um die Codekonsistenz aufrechtzuerhalten. Verwenden Sie das Lining -Tool, um potenzielle Probleme im Voraus zu erkennen.

So führen Sie Programme in der terminalen VSCODE aus So führen Sie Programme in der terminalen VSCODE aus Apr 15, 2025 pm 06:42 PM

Im VS -Code können Sie das Programm im Terminal in den folgenden Schritten ausführen: Erstellen Sie den Code und öffnen Sie das integrierte Terminal, um sicherzustellen, dass das Codeverzeichnis mit dem Terminal Working -Verzeichnis übereinstimmt. Wählen Sie den Befehl aus, den Befehl ausführen, gemäß der Programmiersprache (z. B. Pythons Python your_file_name.py), um zu überprüfen, ob er erfolgreich ausgeführt wird, und Fehler auflösen. Verwenden Sie den Debugger, um die Debugging -Effizienz zu verbessern.

Kann VSCODE für MAC verwendet werden Kann VSCODE für MAC verwendet werden Apr 15, 2025 pm 07:36 PM

VS -Code ist auf Mac verfügbar. Es verfügt über leistungsstarke Erweiterungen, GIT -Integration, Terminal und Debugger und bietet auch eine Fülle von Setup -Optionen. Für besonders große Projekte oder hoch berufliche Entwicklung kann VS -Code jedoch Leistung oder funktionale Einschränkungen aufweisen.

Python vs. JavaScript: Die Lernkurve und Benutzerfreundlichkeit Python vs. JavaScript: Die Lernkurve und Benutzerfreundlichkeit Apr 16, 2025 am 12:12 AM

Python eignet sich besser für Anfänger mit einer reibungslosen Lernkurve und einer kurzen Syntax. JavaScript ist für die Front-End-Entwicklung mit einer steilen Lernkurve und einer flexiblen Syntax geeignet. 1. Python-Syntax ist intuitiv und für die Entwicklung von Datenwissenschaften und Back-End-Entwicklung geeignet. 2. JavaScript ist flexibel und in Front-End- und serverseitiger Programmierung weit verbreitet.

See all articles