Table des matières
Utilisation de base de la bibliothèque de requêtes
Installation
Utilisation
Développez votre propre interface de traduction
Analysez la traduction Baidu
写接口代码
Maison développement back-end Tutoriel Python Comment utiliser la bibliothèque de requêtes pour implémenter l'interface de traduction en Python

Comment utiliser la bibliothèque de requêtes pour implémenter l'interface de traduction en Python

May 14, 2023 pm 10:13 PM
python request

Utilisation de base de la bibliothèque de requêtes

Installation

Pour utiliser la bibliothèque de requêtes en Python, vous devez d'abord l'installer à l'aide de pip. Vous pouvez le faire en exécutant la commande suivante dans le terminal :

pip install requests
Copier après la connexion

Utilisation

Après avoir installé la bibliothèque, vous pouvez l'utiliser pour effectuer des requêtes HTTP. Voici un exemple de la façon de faire une requête GET :

import requests

response = requests.get('https://www.baidu.com')
print(response.text)
Copier après la connexion

Dans cet exemple, nous importons la bibliothèque de requêtes puis utilisons la méthode get pour effectuer une requête GET à https://www.baidu.com. La réponse du serveur est stockée dans la variable de réponse et nous imprimons le texte de la réponse sur la console.

Vous pouvez également transmettre des paramètres à la méthode get pour inclure des paramètres de requête dans la requête :

import requests

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

Dans cet exemple, nous transmettons un dictionnaire de paramètres de requête au paramètre params de la méthode get. L'URL générée inclura les paramètres de requête et nous imprimerons l'URL sur la console.

Vous pouvez également utiliser la méthode post pour faire des requêtes POST :

import requests

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

Dans cet exemple, nous passons un dictionnaire de données au paramètre data de la méthode post. Les données seront envoyées dans le corps de la demande et nous imprimons le texte de la réponse sur la console.

Développez votre propre interface de traduction

Analysez la traduction Baidu

Ouvrez l'adresse de traduction Baidu, puis appuyez sur F12 pour ouvrir le mode développeur, entrez le contenu traduit, cliquez sur Traduire, vous pouvez le voir clairement à travers l'image ci-dessous Adresse demandée et paramètres demandésF12打开开发者模式,输入翻译的内容,点击翻译,通过下图,可以清楚看到请求的地址和请求的参数

Comment utiliser la bibliothèque de requêtes pour implémenter linterface de traduction en Python

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

Comment utiliser la bibliothèque de requêtes pour implémenter linterface de traduction en Python

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

Comment utiliser la bibliothèque de requêtes pour implémenter linterface de traduction en Python

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

写接口代码

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

from fake_useragent import UserAgent
headers = {'User-Agent': UserAgent().random}
Copier après la connexion

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

pip3 install PyExecJS
Copier après la connexion

这个库使用方法也很简单,例如,上面我们已经把百度的加密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)
Copier après la connexion

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

调用成功后,返回如下:

Comment utiliser la bibliothèque de requêtes pour implémenter linterface de traduction en Python

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

Comment utiliser la bibliothèque de requêtes pour implémenter linterface de traduction en Python

res = request.get("https://fanyi.baidu.com").content.decode()
token = re.findall(r"token: '(.*)',", res, re.M)[0]
Copier après la connexion

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")
Copier après la connexion

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

Comment utiliser la bibliothèque de requêtes pour implémenter linterface de traduction en 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")
Copier après la connexion

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

Comment Python utilise-t-il la bibliothèque de requêtes pour implémenter l'interface de traduction🎜🎜Baidu Translation envoie une demande de publication à https://fanyi.baidu.com/v2transapi. Seul le signe dans les données envoyées change constamment. Recherchez v2transapi et constatez que le champ de signe correspond aux données chaîne que vous souhaitez envoyer via js. Obtenu par cryptage. 🎜🎜Comment Python utilise-t-il la bibliothèque de requêtes pour implémenter l'interface de traduction🎜 🎜via Baidu Translate L'analyse js montre que le code clé pour le cryptage est le suivant : 🎜🎜🎜🎜Maintenant, nous avons compris l'intégralité du processus d'appel et tous les paramètres peuvent être construits par nous-mêmes. De cette façon, vous pouvez écrire du code. 🎜🎜Écrire le code de l'interface🎜🎜1. Afin d'éviter l'échec des requêtes, nous devons imiter les requêtes du navigateur et ajouter des en-têtes de requête lors des requêtes. Nous utilisons la bibliothèque tierce fake_useragent pour générer aléatoirement différents <. code> Agent Utilisateur. Le code clé est le suivant : 🎜
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("你好")
Copier après la connexion
🎜2. Générez les paramètres sign Comme nous ne pouvons pas comprendre le code js crypté, nous appelons directement le tiers de python. La bibliothèque exécute le code js. Vous devez installer la bibliothèque execjs avant utilisation. Exécutez le code suivant : 🎜rrreee🎜La méthode d'utilisation de cette bibliothèque est également. très simple. Par exemple, ci-dessus, nous avons mis le code js crypté de Baidu a été extrait, et un nouveau fichier js a été créé et le contenu y a été copié. . Le code clé est le suivant : 🎜rrreee🎜Lisez d'abord le fichier js dans le cache, puis appelez l'objet via execjs. Enfin, la méthode du fichier js est exécutée en appelant la méthode call, où b est la méthode correspondant à js code>, <code>query est le paramètre de la méthode b dans js. 🎜🎜Une fois l'appel réussi, le retour est le suivant :🎜🎜Comment utiliser la bibliothèque de requêtes pour implémenter la traduction dans l'interface Python🎜🎜3. Obtenez la valeur du token. En observant le code source de la page de traduction Baidu, nous avons constaté que le token est stocké dans la page, afin que nous puissions demander à la page Get token.🎜🎜Comment utiliser la bibliothèque de requêtes en Python Implémenter l'interface de traduction🎜rrreee🎜4. Jusqu'à présent, tous les paramètres de requête sont disponibles, nous pouvons donc commencer à construire la requête. Le code principal est le suivant : 🎜rrreee🎜Une fois la demande réussie, l'image suivante sera renvoyée : 🎜🎜 Comment Python utilise-t-il la bibliothèque de requêtes pour implémenter l'interface de traduction🎜🎜L'appel réel révèle que toutes les requêtes n'aboutissent pas, donc plusieurs requêtes doivent être effectuées via une opération en boucle. Lorsqu'il est clair que l'opération réussit, la boucle sera sautée. Le code clé est le suivant : 🎜 rrreee🎜De cette façon, nous avons terminé d'utiliser l'interface de traduction Baidu pour effectuer notre propre appel d'interface de traduction. Vous pouvez utiliser Flask ou Fastapi pour développer des interfaces API selon vos propres besoins. Ci-dessous tous les codes 🎜rrreee

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

PHP et Python: différents paradigmes expliqués PHP et Python: différents paradigmes expliqués Apr 18, 2025 am 12:26 AM

PHP est principalement la programmation procédurale, mais prend également en charge la programmation orientée objet (POO); Python prend en charge une variété de paradigmes, y compris la POO, la programmation fonctionnelle et procédurale. PHP convient au développement Web, et Python convient à une variété d'applications telles que l'analyse des données et l'apprentissage automatique.

Choisir entre PHP et Python: un guide Choisir entre PHP et Python: un guide Apr 18, 2025 am 12:24 AM

PHP convient au développement Web et au prototypage rapide, et Python convient à la science des données et à l'apprentissage automatique. 1.Php est utilisé pour le développement Web dynamique, avec une syntaxe simple et adapté pour un développement rapide. 2. Python a une syntaxe concise, convient à plusieurs champs et a un écosystème de bibliothèque solide.

Peut-on exécuter le code sous Windows 8 Peut-on exécuter le code sous Windows 8 Apr 15, 2025 pm 07:24 PM

VS Code peut fonctionner sur Windows 8, mais l'expérience peut ne pas être excellente. Assurez-vous d'abord que le système a été mis à jour sur le dernier correctif, puis téléchargez le package d'installation VS Code qui correspond à l'architecture du système et l'installez comme invité. Après l'installation, sachez que certaines extensions peuvent être incompatibles avec Windows 8 et doivent rechercher des extensions alternatives ou utiliser de nouveaux systèmes Windows dans une machine virtuelle. Installez les extensions nécessaires pour vérifier si elles fonctionnent correctement. Bien que le code VS soit possible sur Windows 8, il est recommandé de passer à un système Windows plus récent pour une meilleure expérience de développement et une meilleure sécurité.

L'extension VScode est-elle malveillante? L'extension VScode est-elle malveillante? Apr 15, 2025 pm 07:57 PM

Les extensions de code vs posent des risques malveillants, tels que la cachette de code malveillant, l'exploitation des vulnérabilités et la masturbation comme des extensions légitimes. Les méthodes pour identifier les extensions malveillantes comprennent: la vérification des éditeurs, la lecture des commentaires, la vérification du code et l'installation avec prudence. Les mesures de sécurité comprennent également: la sensibilisation à la sécurité, les bonnes habitudes, les mises à jour régulières et les logiciels antivirus.

Le code Visual Studio peut-il être utilisé dans Python Le code Visual Studio peut-il être utilisé dans Python Apr 15, 2025 pm 08:18 PM

VS Code peut être utilisé pour écrire Python et fournit de nombreuses fonctionnalités qui en font un outil idéal pour développer des applications Python. Il permet aux utilisateurs de: installer des extensions Python pour obtenir des fonctions telles que la réalisation du code, la mise en évidence de la syntaxe et le débogage. Utilisez le débogueur pour suivre le code étape par étape, trouver et corriger les erreurs. Intégrez Git pour le contrôle de version. Utilisez des outils de mise en forme de code pour maintenir la cohérence du code. Utilisez l'outil de liaison pour repérer les problèmes potentiels à l'avance.

Comment exécuter des programmes dans Terminal Vscode Comment exécuter des programmes dans Terminal Vscode Apr 15, 2025 pm 06:42 PM

Dans VS Code, vous pouvez exécuter le programme dans le terminal via les étapes suivantes: Préparez le code et ouvrez le terminal intégré pour vous assurer que le répertoire de code est cohérent avec le répertoire de travail du terminal. Sélectionnez la commande Run en fonction du langage de programmation (tel que Python de Python your_file_name.py) pour vérifier s'il s'exécute avec succès et résoudre les erreurs. Utilisez le débogueur pour améliorer l'efficacité du débogage.

Peut-on utiliser pour mac Peut-on utiliser pour mac Apr 15, 2025 pm 07:36 PM

VS Code est disponible sur Mac. Il a des extensions puissantes, l'intégration GIT, le terminal et le débogueur, et offre également une multitude d'options de configuration. Cependant, pour des projets particulièrement importants ou un développement hautement professionnel, le code vs peut avoir des performances ou des limitations fonctionnelles.

Python vs JavaScript: la courbe d'apprentissage et la facilité d'utilisation Python vs JavaScript: la courbe d'apprentissage et la facilité d'utilisation Apr 16, 2025 am 12:12 AM

Python convient plus aux débutants, avec une courbe d'apprentissage en douceur et une syntaxe concise; JavaScript convient au développement frontal, avec une courbe d'apprentissage abrupte et une syntaxe flexible. 1. La syntaxe Python est intuitive et adaptée à la science des données et au développement back-end. 2. JavaScript est flexible et largement utilisé dans la programmation frontale et côté serveur.

See all articles