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爬虫进行有道翻译 -> 正文阅读

[网络协议]利用Python爬虫进行有道翻译

利用Python爬虫进行文本翻译

先呈上代码

**
import requests
from hashlib import md5
import time
#from urllib.parse import urlencode
url = "https://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule"
#请求标头文件
headers = {
        "Accept": "application/json, text/javascript, */*; q=0.01",
        "Connection": "keep-alive",
        "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
        "Cookie": 'OUTFOX_SEARCH_USER_ID_NCOO=258969939.9054812; OUTFOX_SEARCH_USER_ID="403847401@10.105.137.204"; JSESSIONID=aaab1cTKoo2Qp4ttxfd_x; ___rl__test__cookies=1647172042537',
        "Accept-Language": "zh-CN,zh;q=0.9",
        "Origin": "https://fanyi.youdao.com",
        "Referer": "https://fanyi.youdao.com/",
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36",
}
#发送的数据
dic = {
        "i": None,
        "from": "AUTO",
        "to": "AUTO",
        "smartresult": "dict",
        "client": "fanyideskweb",
        "salt": "16471717107666",
        "sign": "4",
        "lts": "1647171710766",
        "bv": None,
        "doctype": "json",
        "version": "2.1",
        "keyfrom": "fanyi.web",
        "action": "FY_BY_REALTIME"
 }
if __name__ == '__main__':
     while True:
        dic["bv"] = md5(headers["User-Agent"].encode("utf-8")).hexdigest()
        dic["i"] = input("请输入你想查询的内容:")
        dic["lts"] = str(int(time.time()*1000))
        dic["salt"] = dic["lts"] + '9'
        e = dic["i"]
        sign_text = "fanyideskweb{}{}Ygy_4c=r#e#4EX^NUGUc5".format(e, dic["salt"])
        dic["sign"] = md5(sign_text.encode("UTF-8")).hexdigest()
        res = requests.post(url=url, data=dic, headers=headers).json()
        print(res["translateResult"][0][0]["tgt"])在这里插入代码片**

首先url对应我们的请求网址,您可以通过浏览器右键检查,找到network,这是浏览器的抓包工具,他会显示出浏览器的各种请求。当你在翻译框中输入文字时,network会随之刷新,然后再那一堆包中查找我们想要的内容,一般这种翻译就是post请求。找到请求的网址,如下图
在这里插入图片描述图中的请求网址就是我们所需要的网址。

然后就是请求头文件headers,它里面包含了翻译的规定还有浏览器的相关参数比如User-Agent就是你的电脑和你的浏览器的相关信息,缺少这些信息可能会让你请求失败,这些信息你可以在上图中的请求表头中寻找。

最后就是所要传输的数据了,这里的数据为一个字典您可以在载荷中找到这些数据,载荷顾名思义就是传输过程中运载的东西,包含了你所翻译的内容和一些反爬的变量。为了防止利用爬虫来爬取数据,很多公司都采取了一些反扒爬技术,这里主要有四个变量需要我们注意,分别是是salt、sign、lts、bv,您可以通过设置断点的方式找到这些变量的所在位置并找到他们的表达式(由于我也不是很了解js这里就不过多解释了)这里放上他们的表达式。在这里插入图片描述浏览器采用的是JavaScript语言,如果您对该语言有所了解可以直接建立一个JS文件进行调用。如果不了解就把这几句话转化成python语言(见代码部分)。由于每次翻译不同的内容这些变量的值都不同,所以需要在main函数中进行计算后在赋值给dic中的各部分。
最后运行就可以进行翻译了!

为什么用有道翻译呢?因为比较简单,刚开始我用的是百度翻译,结果百度的加密对我来说有亿点复杂最后只能翻译小段话,句子一变长就不行了(还是我太菜~),最后就用了有道翻译。等我再研究研究看百度翻译如何爬取。

(本人很菜有说的不对的地方还请指正)

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-03-15 23:04:40  更:2022-03-15 23:05:04 
 
开发: 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年11日历 -2024/11/26 6:45:19-

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