zoukankan      html  css  js  c++  java
  • Python爬虫【实战篇】百度翻译

    先看代码

    import requests
    
    headers = {
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"}
    data = {
        "from":"en",
        "to":"zh",
        "query":"student",
        "transtype":"translang",
        "simple_means_flag":"3",
        "sign":"372549.85108",
        "token":"e89a8f037aac1b51a86cbc82356949d"
    }
    post_url = "http://fanyi.baidu.com/v2transapi"
    
    r = requests.post(post_url,data=data,headers=headers)
    print(r.content.decode())

    从代码中可以看到,所携带的请求参数比较多,可以尝试切换成手机模式进行请求。

    import requests
    
    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"
    }
    data = {
        "query": "学生",
        "from": "zh",
        "to": "en"
    }
    response = requests.post(url='https://fanyi.baidu.com/basetrans', headers=headers, data=data)
    response = response.content.decode('utf-8')
    print(type(response))
    
    import json
    
    response = json.loads(response)
    print(response.get("trans")[0].get("dst"))

    可以很清楚的看到,手机模式所携带的参数比较少,如果我们以后遇到电脑请求携带的参数比较多,可以切换成手机模式来进行请求,会更加容易

    现在我们来实现一个终端请求的翻译工具,下面是一次翻译所请求的 ajax 的url

    第一个url会返回我们所输入的语言类型

    请看代码

    # coding=utf-8
    import requests
    import json
    import sys
    
    
    class BaiduFanyi:
        def __init__(self, trans_str):
            self.trans_str = trans_str
            # 这个url获取的结果是我们输入的是中文还是英文
            self.lang_detect_url = "https://fanyi.baidu.com/langdetect"
            self.trans_url = "https://fanyi.baidu.com/basetrans"
            self.headers = {
                "User-Agent": "Mozilla/5.0 (Linux; Android 5.1.1; Nexus 6 Build/LYZ28E) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Mobile Safari/537.36"}
    
        def parse_url(self, url, data):  # 发送post请求,获取响应
            response = requests.post(url, data=data, headers=self.headers)
            # print(json.loads(response.content.decode()))
            return json.loads(response.content.decode())
    
        def get_ret(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.trans_str}
            # 1.2 发送post请求,获取响应
            lang = self.parse_url(self.lang_detect_url, lang_detect_data)["lan"]
            # 1.3 提取语言类型
            # 2.准备post的数据
            trans_data = {"query": self.trans_str, "from": "zh", "to": "en"} if lang == "zh" else 
                {"query": self.trans_str, "from": "en", "to": "zh"}
            # 3.发送请求,获取响应
            dict_response = self.parse_url(self.trans_url, trans_data)
            # 4.提取翻译的结果
            self.get_ret(dict_response)
    
    
    if __name__ == '__main__':
        trans_str = sys.argv[1]
        baidu_fanyi = BaiduFanyi(trans_str)
        baidu_fanyi.run()
    View Code

    终端输入 python baidufanyi.py 学生 就可以得到结果。

  • 相关阅读:
    国外邮箱怎么选择?哪个企业邮箱收发国际邮件比较稳定?
    企业邮箱哪家好,什么企业邮箱安全稳定好用?
    电子邮箱客户端如何设置?POP3与IMAP协议有什么区别?
    自建企业邮箱对比外包企业邮箱,集团企业邮箱该如何选择?
    集团大企业什么邮箱,大公司申请邮箱要注意什么呢
    双十一怎么买?TOM VIP邮箱推出稀缺靓号,超值福利等你领!
    双十一企业邮箱攻略送你啦!TOM企业邮箱双十一限时4折!仅余200名额!
    企业邮箱怎么买更优惠?双11申请企业邮箱哪家价更低?
    发错邮件怎么办,误删重要邮件怎么办?TOM vip邮箱后悔药一剂,请查收~
    企业邮箱登录注册,外贸企业邮箱购买哪个好?
  • 原文地址:https://www.cnblogs.com/tangkaishou/p/10247489.html
Copyright © 2011-2022 走看看