Rumah >pembangunan bahagian belakang >Tutorial Python >Cara menggunakan perpustakaan permintaan untuk melaksanakan antara muka terjemahan dalam Python
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
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:
rreeeDalam contoh ini, kami menghantar kamus data kepada parameter data kaedah siaran. Data akan dihantar dalam kandungan permintaan dan kami mencetak teks respons ke konsol.
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
Terjemahan Baidu menghantar permintaan pos ke https://fanyi.baidu.com/ v2transapi. Hanya tanda dalam data yang sentiasa berubah.
Melalui analisis js
Baidu Translation, kod utama untuk penyulitan adalah seperti berikut:
Kini sudah jelas Keseluruhan proses panggilan dilindungi, dan semua parameter boleh dibina sendiri. Dengan cara ini anda boleh menulis kod.
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
. js
b
Selepas panggilan berjaya, pemulangan adalah seperti berikut:
3. Dapatkan nilai
Dengan memerhati kod sumber Baidu halaman terjemahan, didapati bahawa disimpan dalam halaman, supaya kita boleh mendapatkan token
.token
token
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)Setakat 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:
Ia 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!