Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan perpustakaan permintaan untuk melaksanakan antara muka terjemahan dalam Python

Cara menggunakan perpustakaan permintaan untuk melaksanakan antara muka terjemahan dalam Python

王林
王林ke hadapan
2023-05-14 22:13:22939semak imbas

Penggunaan asas perpustakaan permintaan

Pemasangan

Untuk menggunakan perpustakaan permintaan dalam Python, anda perlu memasangnya menggunakan pip terlebih dahulu. Anda boleh melakukan ini dengan menjalankan arahan berikut dalam terminal:

pip install requests

Gunakan

Setelah anda memasang pustaka, anda boleh menggunakannya untuk membuat permintaan HTTP. Berikut ialah contoh cara membuat permintaan GET:

import requests

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

Dalam contoh ini, kami mengimport perpustakaan permintaan dan kemudian menggunakan kaedah get untuk membuat permintaan GET ke https://www.baidu.com . Respons pelayan disimpan dalam pembolehubah tindak balas dan kami mencetak teks respons ke konsol.

Anda juga boleh menghantar parameter kepada kaedah get untuk memasukkan parameter pertanyaan dalam permintaan:

import requests

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

Dalam contoh ini, kami menghantar kamus parameter pertanyaan kepada parameter params kaedah get. URL yang dijana akan termasuk parameter pertanyaan dan kami mencetak URL ke konsol.

Anda juga boleh menggunakan kaedah siaran untuk membuat permintaan POST:

rreee

Dalam contoh ini, kami menghantar kamus data kepada parameter data kaedah siaran. Data akan dihantar dalam kandungan permintaan dan kami mencetak teks respons ke konsol.

Bangunkan antara muka terjemahan anda sendiri

Analisis terjemahan Baidu

Buka alamat terjemahan Baidu, kemudian tekan F12 untuk membuka mod pembangun, masukkan kandungan yang diterjemahkan, klik Terjemah , dan lulus Dalam gambar di bawah, anda boleh melihat dengan jelas alamat yang diminta dan parameter yang diminta

Cara menggunakan perpustakaan permintaan untuk melaksanakan antara muka terjemahan dalam Python

Terjemahan Baidu menghantar permintaan pos ke https://fanyi.baidu.com/ v2transapi. Hanya tanda dalam data yang sentiasa berubah.

Cara menggunakan perpustakaan permintaan untuk melaksanakan antara muka terjemahan dalam Python

Melalui analisis js Baidu Translation, kod utama untuk penyulitan adalah seperti berikut:

Cara menggunakan perpustakaan permintaan untuk melaksanakan antara muka terjemahan dalam Python

Kini sudah jelas Keseluruhan proses panggilan dilindungi, dan semua parameter boleh dibina sendiri. Dengan cara ini anda boleh menulis kod.

Tulis kod antara muka

1 Untuk mengelakkan kegagalan permintaan, kami perlu meniru permintaan penyemak imbas dan menambah pengepala permintaan semasa membuat permintaan Kami menggunakan fake_useragent perpustakaan pihak ketiga ini secara rawak menjana User-Agent yang berbeza. Kod kunci adalah seperti berikut:

import requests

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

2. Hasilkan parameter sign Memandangkan kami tidak dapat memahami kod js yang disulitkan, kami terus memanggil perpustakaan pihak ketiga python untuk melaksanakan kod. Ia perlu dipasang sebelum digunakan js pustaka, jalankan kod berikut: execjs

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

Kaedah menggunakan perpustakaan ini juga sangat mudah, di atas kami telah mengekstrak penyulitan Baidu > kod dan cipta fail

baharu, salin kandungan ke dalamnya. Kod kunci adalah seperti berikut: js

pip3 install PyExecJS
js mula-mula membaca fail js ke dalam cache, dan kemudian memanggil objek melalui

. Akhir sekali, kaedah dalam fail

dilaksanakan dengan memanggil kaedah execjs, dengan call ialah kaedah yang sepadan dengan js dan b ialah parameter kaedah js dalam query . jsbSelepas panggilan berjaya, pemulangan adalah seperti berikut:

Cara menggunakan perpustakaan permintaan untuk melaksanakan antara muka terjemahan dalam Python3. Dapatkan nilai

Dengan memerhati kod sumber Baidu halaman terjemahan, didapati bahawa

disimpan dalam halaman, supaya kita boleh mendapatkan token.tokentoken

    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)
Cara menggunakan perpustakaan permintaan untuk melaksanakan antara muka terjemahan dalam PythonSetakat ini, semua parameter permintaan sudah ada, jadi kami Anda boleh mula membina permintaan. Kod teras adalah seperti berikut:

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

Selepas permintaan berjaya, gambar berikut akan dikembalikan:

Cara menggunakan perpustakaan permintaan untuk melaksanakan antara muka terjemahan dalam PythonIa didapati melalui panggilan sebenar yang tidak setiap permintaan berjaya, jadi ia diperlukan Buat berbilang permintaan, lalui operasi gelung, dan lompat keluar dari gelung apabila ia jelas dan berjaya Kod utama adalah seperti berikut:

    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")

Dengan cara ini , kami telah selesai menggunakan antara muka terjemahan Baidu untuk membuat panggilan antara muka terjemahan kami sendiri. Anda boleh menggunakan

atau

untuk membangunkan antara muka API mengikut keperluan anda sendiri. Di bawah adalah semua kodFlask

        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")

Atas ialah kandungan terperinci Cara menggunakan perpustakaan permintaan untuk melaksanakan antara muka terjemahan dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam