使用python中的requests爬取百度翻譯實現中英互譯功能

話不多說,直接上代碼 

# coding=utf-8
import requests
import json
import sys


class BaiduFanyi:
    def __init__(self, tran_str):
        self.tran_str = tran_str
        self.lang_detect_url = "https://fanyi.baidu.com/langdetect"
        self.trans_url = "https://fanyi.baidu.com/basetrans"
        self.headers = {
            "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1"}

    def parse_url(self, url, data):  # 1.2 發送post請求,獲取響應
        r = requests.post(url, data=data, headers=self.headers)
        return json.loads(r.content.decode())

    def get_url(self, dict_response):
        ret = dict_response["trans"][0]["dst"]
        print("result is :", ret)

    def run(self):  # 實現主要邏輯
        # 1.獲取語言類型
        # 1.1 準備post的url地址,post_data
        lang_detect_data = {"query": self.tran_str}
        # 1.2 發送post請求,獲取響應
        lang = self.parse_url(self.lang_detect_url, lang_detect_data)["lan"]
        # 1.3 提取語言類型
        # 2.準備post的數據
        trans_data = {"query": self.tran_str, "from": "zh", "to": "en"} if lang == "zh" else {"query": self.tran_str,
                                                                                              "from": "en", "to": "zh"}
        # 3.發送請求,獲取響應
        dict_response = self.parse_url(self.trans_url, trans_data)
        # 4.提取翻譯的結果
        self.get_url(dict_response)


if __name__ == "__main__":
    trans_str = sys.argv[1]
    baidu_fanyi = BaiduFanyi(trans_str)
    baidu_fanyi.run()

 

代碼上完後運行代碼實現中英互譯:

ps: 輸入英文It's windy today.必須打引號,因爲sys.argv[]是按照空格獲取參數,如果不打引號,sys.argv[1]只能獲取It's而非It's windy today. 

百度翻譯原型:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章