• 爬取有道翻译


    '''
    j---Request URL:http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule
    jo--Request URL:http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule
    job-Request URL:http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule
    
    三次的请求接口是一样的,由此推断
    请求接口:http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule
    
    通过form表单
    i:j   需要翻译的内容
    from:AUTO  源语言
    to:AUTO   目的语言  就是把哪一门语言翻译为哪一门语言
    smartresult:dict
    client:fanyideskweb
    salt:1520339426459
    sign:6edf4011d6b587550ef418fc9ba09b5e
    doctype:json
    version:2.1
    keyfrom:fanyi.web
    action:FY_BY_REALTIME
    typoResult:false
    
    i:jo
    from:AUTO
    to:AUTO
    smartresult:dict
    client:fanyideskweb
    salt:1520339739042
    sign:90d73568704068c16c27f32f4f99a8a5
    doctype:json
    version:2.1
    keyfrom:fanyi.web
    action:FY_BY_REALTIME
    typoResult:false
    
    要想在静态页面生成东西,可用js来进行
    JS:将静态网页变成动态加载的过程
    '''
    from urllib import request,parse
    import time,random
    import hashlib #haslib md5加密的一个包
    import json
    def getMD5(value):
        #创建MD5对象
        md5 = hashlib.md5()
        #对指定的字符串进行加密
        md5.update(bytes(value,encoding='utf-8'))
        #拿出加密后的内容,并赋值给sign
        sign = md5.hexdigest()
        return sign
    
    def fanyi(key):
        base_url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
    
        #生成salt
        #i = "" + ((new Date).getTime() + parseInt(10 * Math.random(), 10)),
        i = int(time.time()*1000) + random.randint(0,10)
    
        #生成sign
        #o = n.md5("fanyideskweb" + t + i + "ebSeFb%=XZ%T[KZ)c(sy!");
        o_str = "fanyideskweb" + key + str(i) + "ebSeFb%=XZ%T[KZ)c(sy!"
    
        data = {
            "i": key,
            "from": "AUTO",
            "to": "AUTO",
            "smartresult": "dict",
            "client": "fanyideskweb",
            "salt": i,
            "sign": getMD5(o_str),
            "doctype": "json",
            "version": "2.1",
            "keyfrom": "fanyi.web",
            "action": "FY_BY_REALTIME",
            "typoResult": "false"
        }
        #转码,拼接
        data = parse.urlencode(data)
        headers = {
            "Accept":"application/json, text/javascript, */*; q=0.01",
            #Accept-Encoding:gzip, deflate
            "Accept-Language":"zh-CN,zh;q=0.9",
            "Connection":"keep-alive",
            "Content-Length":len(data),
            "Content-Type":"application/x-www-form-urlencoded; charset=UTF-8",
            "Cookie":"OUTFOX_SEARCH_USER_ID_NCOO=1135910979.4269547; OUTFOX_SEARCH_USER_ID=-1364254390@10.168.1.8; fanyi-ad-id=40789; fanyi-ad-closed=1; JSESSIONID=aaafp6BJjIzwC4k7Mb5hw; ___rl__test__cookies=1520316265914",
            "Host":"fanyi.youdao.com",
            "Origin":"http://fanyi.youdao.com",
            "Referer":"http://fanyi.youdao.com/",
            "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36",
            "X-Requested-With":"XMLHttpRequest"
        }
    
        req = request.Request(base_url,bytes(data,encoding='utf-8'),headers=headers)
        response = request.urlopen(req)
        content = response.read()
        content = content.decode('utf-8')
        print(content)
        #数据处理
        json_data = json.loads(content)
        sr_dic = json_data['smartResult']
        item_list = sr_dic['entries']
        for i in item_list:
            if i == '':
                pass
            else:
                print(i.strip())
    
    if __name__ == '__main__':
        while True:
            text = input('请输入翻译内容:')
            fanyi(text)
            if text == 'q':
                break
  • 相关阅读:
    Linux network driver
    Linux dd
    Linux aclocal
    Ubuntu
    Makefile
    控制导出符号
    Apache
    Linux nm命令
    Git Submodule
    Linux sed
  • 原文地址:https://www.cnblogs.com/zhangboblogs/p/8542161.html
Copyright © 2020-2023  润新知