原来python还能翻译某道翻译

原来python还能翻译某道翻译

爬取网站四部曲

分析

当我们进入某道翻译的官网时
在这里插入图片描述

先打开控制台,第一时间查看请求,先判断我们需要的数据是通过Fetch/XHR还是文档直接生成的,通过这样去判断我们写脚本的方式是直接通过获取数据还是用xml去定位数据并获取
在这里插入图片描述

因为我们还没使用输入任何东西,不过读者可自行看看,这里主要是为了查看当我们输入后会有什么变化
在这里插入图片描述

分析重点请求出现的问题

首先我们先看看我们请求体有哪些给后台
在这里插入图片描述
我们从上图可以看到
Get

  • smartresult (结果返回方式)
  • smartresult (不知道)
    Post
  • i(我们输入的)
  • from(需要转换的语言)
  • to(将要转成的语言)
  • smartresult(结果返回方式)
  • client(客户端类型)
  • salt(未知)
  • sign(未知)
  • lts(未知)
  • bv(未知)
  • doctype(文档类型)
  • version(版本号)
  • keyfrom(请求地址)
  • action(操作方式)
    这里有几个不知道是什么可以我们可以多测试几个来判断有没有固定的字段
    在这里插入图片描述
    这里我们可以看到除了红圈发生了变化,其他基本上没有发生变化,所以上面那些则是我们需要解决的问题

解决问题

首页我们知道整个翻译过程是ajax实现的,所以我们可以进行调试js代码来判断参数是如何生成的

js代码调试

在这里插入图片描述

然后正常的输入我们要翻译的内容
在这里插入图片描述
很多人可能会出现和我上面这个情况一样,js代码基本上全部在一起,很难看不好分析
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
发现重要信息后,我们就要去看这些数据是那些变量赋值的,怎么来的,慢慢去追溯
在这里插入图片描述
可以看出我们需要获取的数据都是r这个变量,所以我们要追随到r是怎么获取到的**
在这里插入图片描述
在这里插入图片描述
大致都了解了就可以开始写代码了

import hashlib
import requests

if __name__ == '__main__':
    appVersion = "5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36 Edg/105.0.1343.42"
    headers = {
        'User-Agent': "5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36 Edg/105.0.1343.42",
        "x-requested-with": "XMLHttpRequest",
        "origin": "https://fanyi.youdao.com",
        "referer": "https://fanyi.youdao.com/",
        "Cookie": "OUTFOX_SEARCH_USER_ID=1416423765@10.112.57.88; OUTFOX_SEARCH_USER_ID_NCOO=901309710.0569204; ___rl__test__cookies=1663754125840"
    }
    text = """
    软件学堂 :http://www.xue51.com/

软件学堂为你提供最安全的PC软件下载和免费的Mac软件下载,还有单机游戏,手机游戏,手机应用软件下载,同时收集整理了各类软件使用教程、最新游戏攻略、游戏地图及游戏辅助工具供用户下载。 

百度一下“软件学堂”,惊喜等着您哦!

    """

    bv = hashlib.md5(appVersion.encode()).hexdigest()
    ts="1663754314152"
    salt="16637543141524"
    s="fanyideskweb" + text + salt + "Ygy_4c=r#e#4EX^NUGUc5"
    sign=hashlib.md5(s.encode()).hexdigest()
    data = {
        "from": "auto",
        "to": "auto",
        "i": text,
        "smartresult": "dict",
        "fr": "browser_pc",
        "client": "fanyideskweb",
        "salt": salt,
        "sign": sign,
        "lts": ts,
        "bv": bv,
        "doctype": "json",
        "version": "2.1",
        "keyfrom": "fanyi.web",
        "action": "FY_BY_CLICKBUTTION",
    }
    url="https://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule"
    content = requests.post(url, headers=headers, data=data).json()
    translateResultStr=""
    for value in content['translateResult']:
        for v in value:
            translateResultStr+=v['tgt']
        translateResultStr+='\n'
    print("原文:")
    print(text)
    print("翻译结果:")
    print(translateResultStr)

在这里插入图片描述





    • 1
      点赞
    • 4
      收藏
      觉得还不错? 一键收藏
    • 0
      评论

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值