IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 06--有道翻译--爬虫解析 -> 正文阅读

[Python知识库]06--有道翻译--爬虫解析

1、网址

https://fanyi.youdao.com/

2、分析网站

在这里插入图片描述

这里我们能进行一个数据的翻译,代码如下,注意

https://fanyi.youdao.com/translate_osmartresult=dict&smartresult=rule当中的_o要去除掉

import requests
url = "https://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3878.400 QQBrowser/10.8.4518.400",
    "Cookie": 'P_INFO=null; OUTFOX_SEARCH_USER_ID_NCOO=947736847.773168; OUTFOX_SEARCH_USER_ID="1198499806@10.105.137.202"; _ga=GA1.2.1663751421.1637331565; JSESSIONID=aaaTr_RbM-Yyd-dxtzl-x; ___rl__test__cookies=1648384942617',
    "Referer": "https://fanyi.youdao.com/"
}
params = {
"i": "我们在这里做分析",

"from": "AUTO",
"to": "AUTO",
"smartresult": "dict",
"client": "fanyideskweb",
"salt": "16483849426281",
"sign": "8eeff53de46e1048e558b6b82a98d022",
"lts": "1648384942628",
"bv": "5fc0aac3ed3becb0c002163530da8bea",
"doctype": "json",
"version": "2.1",
"keyfrom": "fanyi.web",
"action": "FY_BY_REALTlME"
}
resp = requests.post(url, headers=headers, data=params)
print(resp)
print(resp.json())

结果如下

在这里插入图片描述

3、数据解密

在这里插入图片描述

上面的数据是需要我们解密的

首先ITs是一个时间戳,在这个网站进行验证https://tool.lu/timestamp/

在这里插入图片描述

注意,这里我们输入1648384942628没有最后三位,只有前10位数。

这时候我们搜索一下

在这里插入图片描述

我们搜索translate_o

在这里插入图片描述

点击进去之后呢,然后我们crtf+f,搜索本页面translate_o

在这里插入图片描述

我们在本函数后面加上一个断点,然后再刷新一下页面

在这里插入图片描述

这里就是我们得到的加密数据,我们需要没有加密的数据,那这时开始往回掉

在这里插入图片描述
在这里插入图片描述

这里就是我们需要的数据了。主要还是获得变量r的数据

在这里插入图片描述

这里面的n就是我们需要翻译的数据。

我们进入v.generateSaltSign(n);函数中

在这里插入图片描述

我们在console中调试一下

在这里插入图片描述

    var r = function(e) {
        var t = n.md5(navigator.appVersion)
          , r = "" + (new Date).getTime()
          , i = r + parseInt(10 * Math.random(), 10);
        return {
            ts: r,
            bv: t,
            salt: i,
            sign: n.md5("fanyideskweb" + e + i + "Ygy_4c=r#e#4EX^NUGUc5")
        }

得到里面变量的值

"5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3878.400 QQBrowser/10.8.4518.400"
from hashlib import md5
appVersion = "5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3878.400 QQBrowser/10.8.4518.400"
def r(e):
    t = md5(appVersion.encode()).hexdigest()  #hexdigest()是将数据转换为16位
    print(t)
r('我们在这里做分析')

在这里插入图片描述

在这里插入图片描述

我们比较一下,这里数据都是相同的。

对这些变量进行解密

from hashlib import md5
import time
import random
appVersion = "5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3878.400 QQBrowser/10.8.4518.400"
def r(e):
    #var t = n.md5(navigator.appVersion)
    t = md5(appVersion.encode()).hexdigest()  #hexdigest()是将数据转换为16位
    print(t)
    #r = "" + (new Date).getTime() #时间戳
    r = str(int(time.time()*1000))
    print(r)
    #i = r + parseInt(10 * Math.random(), 10);
    i = r + str(random.randint(0, 9))
    print(i)
    # return {
    #     ts: r,
    #     bv: t,
    #     salt: i,
    #     sign: n.md5("fanyideskweb" + e + i + "Ygy_4c=r#e#4EX^NUGUc5")
    # }
    return {
        'ts': r,
        'bv': t,
        'salt': i,
        'sign': md5(("fanyideskweb" + e + i + "Ygy_4c=r#e#4EX^NUGUc5").encode()).hexdigest()
    }

print(r('我们在这里做分析'))

在这里插入图片描述
在这里插入图片描述

代码

import requests
from hashlib import md5
import time
import random
url = "https://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3878.400 QQBrowser/10.8.4518.400",
    "Cookie": 'P_INFO=null; OUTFOX_SEARCH_USER_ID_NCOO=947736847.773168; OUTFOX_SEARCH_USER_ID="1198499806@10.105.137.202"; _ga=GA1.2.1663751421.1637331565; JSESSIONID=aaaTr_RbM-Yyd-dxtzl-x; ___rl__test__cookies=1648384942617',
    "Referer": "https://fanyi.youdao.com/"
}

appVersion = "5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3878.400 QQBrowser/10.8.4518.400"
def r(e):
    #var t = n.md5(navigator.appVersion)
    t = md5(appVersion.encode()).hexdigest()  #hexdigest()是将数据转换为16位
    # print(t)
    #r = "" + (new Date).getTime() #时间戳
    r = str(int(time.time()*1000))
    # print(r)
    #i = r + parseInt(10 * Math.random(), 10);
    i = r + str(random.randint(0, 9))
    # print(i)
    # return {
    #     ts: r,
    #     bv: t,
    #     salt: i,
    #     sign: n.md5("fanyideskweb" + e + i + "Ygy_4c=r#e#4EX^NUGUc5")
    # }
    return {
        'ts': r,
        'bv': t,
        'salt': i,
        'sign': md5(("fanyideskweb" + e + i + "Ygy_4c=r#e#4EX^NUGUc5").encode()).hexdigest()
    }
def fanyi(word):
    data = r(word)
    params = {
        "i": "我们在这里做分析",

        "from": "AUTO",
        "to": "AUTO",
        "smartresult": "dict",
        "client": "fanyideskweb",
        "salt": data['salt'],
        "sign": data['sign'],
        "lts": data['ts'],
        "bv": data['bv'],
        "doctype": "json",
        "version": "2.1",
        "keyfrom": "fanyi.web",
        "action": "FY_BY_REALTlME"
    }
    resp = requests.post(url, headers=headers, data=params)
    return resp.json()

if __name__ == '__main__':
    while True:
        word = input('输入需要翻译的内容:')
        data = r(word)
        results = fanyi(word)
        print(results)
        #提取内容
        r = results['translateResult'][0]
        print(r)
        print(r[0]['src']) #提取中文
        print(r[0]['tgt']) #提取英文

结果

输入需要翻译的内容:我们在这里做分析
{'type': 'ZH_CN2EN', 'errorCode': 0, 'elapsedTime': 0, 'translateResult': [[{'src': '我们在这里做分析', 'tgt': 'We are here to do analysis'}]]}
[{'src': '我们在这里做分析', 'tgt': 'We are here to do analysis'}]
我们在这里做分析
We are here to do analysis
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 00:00:16  更:2022-04-01 00:02:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 4:05:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计