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.hqwc.cn/news/455194.html

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

相关文章

代码随想录day18--二叉树的应用6

LeetCode530.二叉搜索树的最小绝对差值 题目描述: 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数,其数值等于两值之差的绝对值。 示例 1: 输入:root [4,2,6,1,3] …

【紧耦合新范式】Think-on-Graph:解决大模型在医疗、法律、金融等垂直领域的幻觉

Think-on-Graph:解决大模型在医疗、法律、金融等垂直领域的幻觉 Think-on-Graph 原理ToG 算法步骤:想想再查,查查再想实验结果 论文:https://arxiv.org/abs/2307.07697 代码:https://github.com/IDEA-FinAI/ToG Think…

大数据企业应用场景分析

目录 一、企业分析 1.1 企业领域维度分析 1.2 技术服务型维度分析 1.3 细分领域维度分析 二、大数据应用场景 2.1 数据分析 2.2 智能推荐 2.3 产品/流程优化 2.4 异常监测 2.5 智能管理 2.6 人工智能和机器学习 三、总结 前言:想讲清楚大数据应用对企业…

问题排查利器 - 分布式 trace

在分布式系统开发中,系统间的调用往往会横跨多个应用之间的接口。负责的调用链路也导致了,当线上环境出现问题时,例如请求失败、延迟增加或错误发生,我们无法第一时间确定是哪个环节出了问题,这给故障排查和修复带来了…

CleanMyMacX4.14.6如何清理mac垃圾内存

一直以来,苹果电脑的运行流畅度都很好,但是垃圾内存多了磁盘空间慢慢变少,还是会造成卡顿的。这篇文章就告诉大家电脑如何清理垃圾内存,电脑如何清理磁盘空间。 一、电脑如何清理垃圾内存 垃圾内存指的是各种缓存文件和系统垃圾…

第二篇:MySQL安装与配置(基于小皮面板(phpstudy))

在第一篇中介绍了数据库的相关概念,了解到SQL是用来操作数据库管理系统的语言,因此要学习数据库技术,数据库管理系统的配备是必不可少的! 并且出于流行性与实惠性的双考量而选择MySQL这款数据库管理系统软件 一,工具推…

RabbitMQ 安装

下载erlang语言: erlang语言 下载RabbitMQ rabbitmq 安装erlang 1.以管理员身份安装erlang 2.弹出框选择next 3.选择安装路径,亦可以安装在默认路径 4.接下来一路点击下一步,无需任何修改,直到 install安装为止&#xff…

[BUUCTF]-PWN:inndy_echo解析

查看保护 查看ida 有格式化字符串漏洞,可以修改printf的got表内地址为system,传参getshell 解法一: 在32位中可以使用fmtstr_payload直接修改,免去很多麻烦 完整exp: from pwn import* pprocess(./echo) premote(n…

私有化部署一个吃豆人小游戏

目录 效果 安装步骤 1.安装并启动httpd 2.下载代码 3.启动httpd 使用 效果 安装步骤 1.安装并启动httpd yum -y install httpd 2.下载代码 进入目录 cd /var/www/html/ 下载 git clone https://gitee.com/WangZhe168_admin/pacman-canvas.git 3.启动httpd syste…

Postman发送带登录信息的请求

环境:win10Postman10.17.7 假设有个请求是这样的: RequiresPermissions("tool:add") PostMapping(value"/predict") ResponseBody /** * xxx * param seqOrderJson json格式的参数 * return */ public String predictSampleIds(Req…

第1节、电路连接【51单片机+L298N步进电机系列】

↑↑↑点击上方【目录】,查看本系列全部文章 摘要:本节介绍如何搭建一个51单片机L298N步进电机控制电路,所用材料均为常见的模块,简单高效的方式搭建起硬件环境。 一、硬件清单 ①51单片机模块 ②恒流模块 ③开关电源 ④L298N模…

Springboot启动出现Waiting for changelog lock...问题

今天在开发的时候,Springboot启动的时候出现Waiting for changelog lock…问题. 问题原因:该问题就是发生了数据库的死锁问题,可能是由于一个杀死的liquibase进程没有释放它对DATABASECHANGELOGLOCK表的锁定,导致服务启动失败&…