Python进阶----在线翻译器(Python3的百度翻译爬虫)

目录

一、此处需要安装第三方库requests:

二、抓包分析及编写Python代码 

        1、打开百度翻译的官网进行抓包分析。

        2、编写请求模块 

        3、输出我们想要的消息

三、所有代码如下:


一、此处需要安装第三方库requests:

在Pycharm平台终端或者命令提示符窗口中输入以下代码即可安装

pip install requests

二、抓包分析及编写Python代码 

        1、打开百度翻译的官网进行抓包分析

  1. 打开百度翻译的官网
  2. 按下F12键,打开开发者界面
  3. 此时由于翻译页面没有数据传输,属于静态页面,开发者界面也就没有任何数据传输的情况
  4. 在单词输入框中输入单词cat
  5. 在开发者界面中可以看到有数据正在进行传输(百度翻译是局部刷新,也就是Ajax框架的异步加载)
  6. 在过滤器中输入sug(sug是服务器响应给客户端的数据)
  7. 这里可以看到有3条sug,这是因为单词是由三个字母所组成的:
  • 第一个sug是输入c,服务器所响应的消息,里面携带翻译c数据,在data中可以看到
  • 第二个sug是输入ca,服务器所响应的消息,里面携带翻译ca数据,在data中可以看到
  • 第三个sug是输入cat,服务器所响应的消息,里面携带翻译cat数据,在data中可以看到 

  • 如下图所示:
  •  展开第三个sug中的data,可以看到翻译的数据如下:可以看到
  • 里面除了有单词cat的翻译,还有其相似单词的翻译。
  • 其中data为字典类型,k和v是key值,k为单词,v为翻译。
  • 此处就是我们所需要的信息了
  • 我们需要的是输入的完整单词的sug,故此处需要的是第三个sug。

        2、编写请求模块 

        此处有两种方式编写,第一种是借助第三方网站的方式编写,第二种为自己抓包分析的方式编写。

        第一种方式:此种方式比较小白,不利于对爬虫的学习。

  • 借助第三方网站(Convert curl commands to code)

    (1)选中需要的输入的完整单词的sug,右键鼠标复制为cURL(bash)   

  • (2)打开第三方网站,复制。选择Python,即可得到请求的Python代码。

    (3)复制Python代码,到Pycharm中。

  • 此处已经帮我们把请求头书写完了,但需要注意的是data中的kw的值为cat。也就是只翻译cat的请求信息,此处我们希望通过键盘输入需要翻译的单词来进行请求翻译。故需要进行一点修改:

    keyword = input("请输入需要翻译的单词:")
    data = {'kw': keyword
    }

    这样就可以通过键盘来输入单词进行翻译

  第二种方式:此种是自己通过抓包分析后,自己编写请求头模块,利于对爬虫的学习。

  • requests请求模块有get方法和post方法,此处使用的是post方法。(不清楚的可以百度一下)
  • post方法里面包含多个参数(不写的话requests模块会有默认的参数),里面需要自己写明三个参数。分别为url(访问地址),header(请求头),data(请求数据)
  • 通过抓包分析我们可以知道以上三个参数:

url所在位置:

header所在位置:

        可以把header中的信息全部复制,以字典的类型封装为请求头。但此处只需要使用到一个关键信息--User Agent(用户身份认证),也可以只将这一个关键信息放入header中。

data所在位置: 

        这里我们只需要用到kw信息,将其放入到data中,以字典的形式进行存入即可。 

此处的代码书写为:

# 1、导入请求模块
import requests
# 将url地址复制过来
url = "https://fanyi.baidu.com/sug"
# 2、通过键盘输入需要翻译的单词
keyword = input("请输入需要翻译的单词:")
# 3、请求数据即为输入需要翻译的单词
data = {'kw': keyword
}
# 4、header请求头装入了user—angent信息
header = {'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Mobile Safari/537.36'
}
# 5、使用post,按照url,header,data顺序依次写入数据
response = requests.post(url=url, headers=header, data=data)

        3、输出我们想要的消息

        此时,response里面所有的内容就是我们在抓包分析过程中sug中的视图内容。找到我们所需要的信息,对其进行打印即可。

  • 如果只要翻译所输入的单词,不需要拓展其相关单词的翻译。
# a、如果只需要翻译单词,不需要其他相关单词及其翻译
# 将response变成字典形式并提取data中的信息
res = response.json()['data']
# 我们需要的信息是data中的第一行数据,找到后对其进行打印
print(res[0]['k']+"\t"+res[0]['v'])
  • 如果既要翻译所输入的单词,又需要拓展其相关单词的翻译。
# b、如果需要翻译单词,还需要其他相关单词及其翻译
# 将response变成字典形式并提取data中的信息
res = response.json()['data']
# 通过循环读取res中的k和v的值即可
for x in res:print(x['k']+"\t"+x['v'])

三、所有代码如下:

# 1、导入请求模块
import requests
# 将url地址复制过来
url = "https://fanyi.baidu.com/sug"
# 2、通过键盘输入需要翻译的单词
keyword = input("请输入需要翻译的单词:")
# 3、请求数据即为输入需要翻译的单词
data = {'kw': keyword
}
# 4、header请求头装入了user—angent信息
header = {'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Mobile Safari/537.36'
}
# 5、使用post,按照url,header,data顺序依次写入数据
response = requests.post(url=url, headers=header, data=data)
# print(response)
# # 6、输出我么想要的信息
# # a、如果只需要翻译单词,不需要其他相关单词及其翻译
# # 将response变成字典形式并提取data中的信息
# res = response.json()['data']
# # 我们需要的信息是data中的第一行数据,找到后对其进行打印
# print(res[0]['k']+"\t"+res[0]['v'])
# b、如果需要翻译单词,还需要其他相关单词及其翻译
# 将response变成字典形式并提取data中的信息
res = response.json()['data']
# 通过循环读取res中的k和v的值即可
for x in res:print(x['k']+"\t"+x['v'])

        运行以上代码即可(注:运行代码时,需要保证处于联网状态。因为requests模块会对服务器进行请求,服务器会响应数据。需要联网,才能传输数据)

基于以上内容, 可以基于搜狗翻译(或其他翻译网站)进行编写PYthon3在线翻译爬虫程序。

四、基于搜狗翻译的PYthon3在线翻译爬虫程序

        可以基于以上内容,自己制作一个基于搜狗翻译的PYthon3在线翻译的爬虫程序,下面给出其代码:

# 基于搜狗翻译,编程成Python爬虫程序,输入单词,进行实时翻译,并附加相关单词的翻译学习
# post方法是用于向Web服务器提交数据的HTTP请求方法。它允许客户端将数据作为请求的一部分发送给服务器,以便服务器进行处理或存储。
# 1、导入requests模块
import pprint
import requests
# 2、复制搜狗翻译的链接
query_url = 'https://fanyi.sogou.com/reventondc/suggV3'
# 3、制作请求头,模拟人的操作
keyword = input("请输入你要翻译的单词:")
data = {'from':'auto','to': 'zh-CHS','client': 'wap','text': keyword,'uuid': '21ef11c5-e2cd-49b8-a397-c89a32dd67da','pid': 'sogou-dict-vr','addSugg': 'on',
}
# 4、模拟识别码
header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36'}
# 5、使用post方法进行请求
response = requests.post(url=query_url, headers=header, data=data)
# 6、提取所需要的信息
result = response.json()['sugg']
# 循环打印
for x in result:print(x['k']+': '+x['v'])

  注:此贴只用于学习交流,禁止商用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/671039.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

可解释性AI(XAI)的主要实现方法和研究方向

文章目录 每日一句正能量前言主要实现方法可解释模型模型可解释技术 未来研究方向后记 每日一句正能量 当你还不能对自己说今天学到了什么东西时,你就不要去睡觉。 前言 随着人工智能的迅速发展,越来越多的决策和任务交给了AI系统来完成。然而&#xff…

必看!嵌入式基于UART的通信协议-RS232、RS485协议解析

这两种都是串口通讯的变种,为了提升串口通信的距离和稳定性。通常来说,正常的串口通信使用的是TTL电平,即高电平为2.4-5V,低电平为0-0.4V。高低电平之间的范围很小,如果有静电或者其他外界的干扰,很快会将低…

BT656视频传输标准

前言 凡是做模拟信号采集的,很少不涉及BT.656标准的,因为常见的模拟视频信号采集芯片都支持输出BT.656的数字信号,那么,BT.656到底是何种格式呢? 本文将主要介绍 标准的 8bit BT656(4:2:2)YCbC…

十分钟掌握前端获取实时数据的三种主流方式

前端获取实时数据的三种主流方式 本文聊聊前端获取实时数据的三种主要方式。想象一下,我们在网上购物时,经常能看到最新的优惠信息弹出,或者在社交媒体上看到朋友的最新动态更新。这些都是因为后端在默默地向我们的页面推送了最新的消息。那…

22.HarmonyOS App(JAVA)位置布局PositionLayout使用方法

不常用 在PositionLayout中,子组件通过指定准确的x/y坐标值在屏幕上显示。(0, 0)为左上角;当向下或向右移动时,坐标值变大;允许组件之间互相重叠 布局方式 PositionLayout以坐标的形式控制组件的显示位置,允许组件相…

【C++】win11,OpenCV安装教程(VS2022)

1.下载 首先进入官网,下载对应的安装包,苹果系统就选IOS pack,微软系统就选Windows 下载地址:Releases - OpenCV 不方便外网下载的话可以下载我分享的百度网盘资源: 链接:https://pan.baidu.com/s/1lV7l…

rhel8静态ip配置

1.先cd进来 2.把默认的dhcp改成static IPADDR192.168.211.22 22随意改,255以下的数字都行,1和255不要用 GATEWAY192.168.211.2和虚拟机默认网关保持一致 重启网络 nmcli c reload和 nmcli c up ens160 ping百度测试--(成功了&#xff0…

如何在Linux中安装新版的Python软件

一、引言 Python是目前世界上最为流行的编程语言,其在人工智能领域表现尤为出色。通常,我们为了测试github上面的一些项目,比如:chat-on-wechat, 我们就可以在vps上的Linux系统中安装Python,从而实现各种人…

CentOS镜像如何下载?在VMware中如何安装?

一、问题 CentOS镜像如何下载?在VMware中如何安装? 二、解决 1、CentOS镜像的下载 (1)官方网站 The CentOS Project (2)官方中文官网 CentOS 中文 官网 (3)选择CentOS Linux…

92.网游逆向分析与插件开发-游戏窗口化助手-显示游戏数据到小助手UI

内容参考于:易道云信息技术研究院VIP课 上一个内容:游戏窗口化助手的UI设计-CSDN博客 码云地址(游戏窗口化助手 分支):https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号:e8116af3a7b0186adba…

初识C语言·编译与链接

1 翻译环境和运行环境 C语言标准ANSI C 实现C语言代码的时候 一般需要经过两种环境,一是翻译环境,二是运行环境,计算机能识别的是二进制的指令,人写完代码后通过翻译环境,使代码变成计算机能读懂的可执行的机器指令&a…

机器人工具箱学习(一)

一、机器人工具箱介绍 机器人工具箱是由来自昆士兰科技大学的教授Peter Corke开发的,被广泛用于机器人进行仿真(主要是串联机器人)。该工具箱支持机器人一些基本算法的功能,例如三维坐标中的方向表示,运动学、动力学模…

极限方法大总结【高数笔记】

【方法步骤】 分几步?又有几个小步骤? 【不同类型的极限】 不同类型极限的方法又有哪些步骤? 不同类型极限的方法有哪些前提条件? 个别类型极限方法的技巧有哪些?

『运维备忘录』之 Yum 命令详解

运维人员不仅要熟悉操作系统、服务器、网络等只是,甚至对于开发相关的也要有所了解。很多运维工作者可能一时半会记不住那么多命令、代码、方法、原理或者用法等等。这里我将结合自身工作,持续给大家更新运维工作所需要接触到的知识点,希望大…

Bootstrap5 导航组件和面包屑

Bootstrap5 导航组件和面包屑 Bootstrap5 提供了一种简单快捷的方法来创建基本导航,它提供了非常灵活和优雅的选项卡和Pills等组件。 Bootstrap5 的所有导航组件,包括选项卡和Pills,都通过基本的 .nav 类共享相同的基本标记和样式。 使用 B…

深入探究:JSONCPP库的使用与原理解析

君子不器 🚀JsonCPP开源项目直达链接 文章目录 简介Json示例小结 JsoncppJson::Value序列化Json::Writer 类Json::FastWriter 类Json::StyledWriter 类Json::StreamWriter 类Json::StreamWriterBuilder 类示例 反序列化Json::Reader 类Json::CharReader 类Json::Ch…

2024年考PMP还有什么用?

PMP 是项目管理专业人士资格认证的意思,也是项目管理领域通用的证书, 做项目的基本都会去考。 要说 PMP 有啥作用? 个人感觉 PMP 证书更多的是跳槽、转行的敲门砖的作用,因为现在很多公司都要 PMP 证书,有了可以加分…

工厂方法模式(Factory Method Pattern)

原文地址:https://jaune162.blog/design-pattern/factory-method-pattern/ 概述 工厂方法模式(Factory Method Pattern)是一个对象创建型模式。 定义一个用于创建对象的接口,让子类决定实例化哪一个类。 Factory Method使一个类的实例化延迟到其子类。 – 《设计模式:可复…

Leetcode21:合并两个有序链表

一、题目描述 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4]输入:l1 [], l2 [] 输出:[]输入&#…

【芯片设计- RTL 数字逻辑设计入门 8 -- 四选一多路器】

文章目录 四选一多路输出器verilog case 语句verilog 代码testbench 代码仿真波形 问题小结 四选一多路输出器 制作一个四选一的多路选择器,要求输出定义上为线网类型 状态转换: d0 00 d1 01 d2 10 d3 11verilog case 语句 case(express…