用Python爬虫制作一个简易翻译器

news2024/9/21 1:27:56

我们通常是通过requests+BS4的方法来获取网页内容,这种方法导入模块较多,速度相对有点儿慢,此时我们可以用requests的post方法向指定服务器发送请求,获取数据后格式化为json,然后获取相关键值。这种方法用到了requests和json两个模块,通过headers进行伪装。

一、获取网页翻译源码

import requests

# 定义请求的 URL 和数据
url = 'https://fanyi.so.com/index/search'
data = {'eng': '1', 'validate': '', 'ignore_trans': '0', 'query': 'as well'}
# 伪装
headers = {
    'useragent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Mobile Safari/537.36 Edg/128.0.0.0',
    'pro': 'fanyi'
}

# 发送 POST 请求并获取响应
response = requests.post(url=url, headers=headers, data=data).json()

# 提取翻译文本
translated_text = response['data']['fanyi']
print(translated_text)

二、代码解读

1. URL 和请求数据:请求的目标 URL 是 http://fanyi.so.com,用于查询翻译结果。请求数据中,query 是我们需要翻译的文本,这里设定为 "as well"。

2. 请求头:通过 headers 指定浏览器标识,模拟真实用户访问。这样可以避免请求被认为是机器人访问而被拦截。

3. POST 请求:使用 requests.post() 发送 POST 请求,并将服务器返回的 JSON 响应转换为字典。

4. 提取翻译:响应数据的 data['fanyi'] 字段包含了翻译后的文本。代码最后将该翻译结果输出。

三、优化代码

上面的代码有几个问题1.不是连续提问,2. 只能英译汉,3. 没有列出音标。于是,我们根据需求又对上述代码进行更新。增加while循环,可以连续提问题;同时判断翻译后的结果和要翻译的内容是否一致,如果一致说明语言设置那里有误就进行更改eng为2;同时加入try...except,增加获取单词音标phonetic。于时,我们就得到下面的代码:

import requests,json

url = 'https://fanyi.so.com/index/search'

headers = {'useragent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Mobile Safari/537.36 Edg/128.0.0.0',
               'pro':'fanyi'}

while True:
    word = input("请输入单词:")
    data = {'eng':'1',
            'validate':'',
            'ignore_trans':'0',
            'query': word,
        }
    JSON = requests.post(url=url,headers=headers,data=data).json()
    meaning = JSON['data']['fanyi']
    if meaning == word: #判断译文和原文是否一致
        data = {'eng':'2',
        'validate':'',
        'ignore_trans':'0',
        'query': word,
    }
        JSON = requests.post(url=url,headers=headers,data=data).json()   
    meaning = JSON['data']['fanyi']    
    try:
        phonetic = JSON['data']['explain']['phonetic']['英']
    except:
        phonetic = ""
    print(word,phonetic,meaning)

代码运行结果显示结果如下:

代码运行结果

四、注意事项

1. 如果想获取请求的域名,要通过chrome打开网页,输入一个单词如hello,然后按下F12,查看标头,找到请求网址。

获取请求网址

2. 在载荷中找到post的数据,存入到data变量:

找到发送的数据内容。

3. 发送的数据变量data中eng的键值为1是英译中,2是中译英。

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

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

相关文章

电脑系统找不到mfc100u.dll,无法继续执行代码的多种解决方法

当你试图打开某些应用程序或游戏时,可能会收到“mfc100u.dll文件丢失”的错误消息。这个错误通常会使应用程序或游戏无法正常启动。以下关于mfc100u.dll丢失的解决方法的一些分析。 一.什么是mfc100u.dll文件 mfc100u.dll是Microsoft Visual Studio 2010应用程序使…

通过API使用通义千问

1. 获取API-KEY 开通百炼服务并获得API-KEY 登录阿里云百炼大模型服务平台。 鼠标悬停于页面右上角的个人中心(人性标志)上,再在下拉菜单中单击API-KEY。 在左侧导航栏,选择全部API-KEY或我的API-KEY。(说明&#x…

BEV学习---LSS-2

前言一、相关参数设置二、LSS算法前向过程 1.整体步骤2.创建视锥3.坐标变换4.视锥点云特征5.VoxelPooling 5.1 cumsum_trick(池化累积求和技巧):5.2 VoxelPooling总结 前言 目前在自动驾驶领域,比较火的一类研究方向是基于采集到的环视图像信息去构建BEV视角下的特征…

Mysql基础练习题 1527.患某种疾病的患者 (力扣)

查询患有 I 类糖尿病的患者 ID (patient_id)、患者姓名(patient_name)以及其患有的所有疾病代码(conditions)。I 类糖尿病的代码总是包含前缀 DIAB1 。 题目链接: https://leetcode.cn/proble…

【JS逆向学习】快乐学堂登陆接口(自定义DES加密、ddddocr验证码识别)

逆向目标 网址:https://www.91118.com/Passport/Account/Login接口:https://www.91118.com/passport/Account/LoginPost参数: passr 逆向过程 输入手机号、密码、验证码 点击登陆,多试几次,然后观察并比较不通请求…

具有RC反馈电路的正弦波振荡器(文氏桥振荡器+相移振荡器+双T振荡器)

2024-9-10,星期二,22:13,天气:雨,心情:晴。今天从下午开始淅淅沥沥一直在下雨,还好我有先见之明没骑自行车,但是我忘带伞了,属于说是有点脑子但是不多了,2333…

通信八股总结for普联

一.信息论 1.香农公式 1.1 香农公式的内容 :信道容量(bps) :信道带宽(Hz) :信噪比(dB)。 1.2 香农公式的意义 揭示了在有噪声的通信信道中,信息传输速率的理论上限。 可以通过改进编码或者调制技术来…

gradle 学习备忘

所学版本: Gradle User Manualhttps://docs.gradle.org/8.7/userguide/userguide.html?_gl1*1f2c50b*_gcl_au*NzQ2ODAwODgxLjE3MjMzNjI5Mzk.*_ga*NDY3MDM0MDIzLjE3MjMzNjI5NDA.*_ga_7W7NC6YNPT*MTcyNTk3NTU3OC4yLjEuMTcyNTk3NTY0MC42MC4wLjA. Android 官网文档&am…

第十九次CCF计算机软件能力认证题目解析(详细题解+代码+个人解读+持续跟新)

第一题 线性分类器 考虑一个简单的二分类问题——将二维平面上的点分为 A A A 和 B B B 两类。 训练数据包含 n n n 个点,其中第 i i i 个点( 1 ≤ i ≤ n 1 ≤i ≤ n 1≤i≤n)可以表示为一个三元组 ( x i , y i , t y p e i ) (x_i,y…

strncpy陷阱

最近遇到了一个strncpy的bug,他们居然说这不是bug,而我认为这是很严重的bug! 相比于strcpy来说,strncpy具有更高的安全性,但是同时会带来一个问题,就是c字符串不会自动补’\0’。 废话不多说,…

使用Docker安装 Skywalking(单机版)

使用Docker安装 Skywalking(单机版) 文章目录 使用Docker安装 Skywalking(单机版)Skywalking 介绍Skywalking 安装 Skywalking 介绍 Skywalking官网 分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容…

GPU相关的一些截图

GPU相关的一些截图

【树和二叉树的相关定义】概念

1.回顾与概览 2.什么是树型结构 3.树的(递归)定义与基本术语 3.1树的定义 注意:除了根结点以外,任何一个结点都有且仅有一个前驱 3.2树的其他表示方式 3.3树的基本术语 结点:数据元素以及指向子树的分支根结点:非空…

OpenMV——色块追踪

Python知识: 1.给Python的列表赋值: 定义一个元组时就是 元组a (1,2,…) 元组中可以只有一个元素,但是就必须要加一个 “ , ” 如 a (2,) 而列表的定义和元组类似,只是把()换成[]: #那么下面的colour_1 ~ 3属于元组&#xf…

【leetcode C++】动态规划

动态规划解题思路 1. 状态表示 dp表 里面的值所代表的含义(1.根据题目要求得出 2.经验 题目要求 3.分析问题过程中,发现重要子问题) 2. 状态转移方程 dp[i] 等于什么 3. 初始化 保证填表不越界 4. 填表顺序 为了填写该状态的时候&am…

02 Docker基本管理

2.1 Docker镜像管理 2.1.1 案例:构建各类Docker镜像服务 2.1.2 案例环境 主机 操作系统 主机IP地址 服务器 Centos7.3x86-64 192.168.10.100 2.1.3 案例拓扑原理 通过 Dockerfile 创建常见应用镜像,Dockerfile 的构成如图 2.3 所示 图 2.1 Doc…

为什么说开放式耳机对耳朵更友好?性价比高的四款蓝牙耳机推荐

开放式耳机对耳朵更友好,主要体现在以下方面: 减少耳部闷热和潮湿:开放式耳机的开放结构,不会完全封闭耳朵,使得空气能够自由流通。这样可以有效减少因长时间佩戴导致的耳部闷热和潮湿情况。而耳部处于闷热潮湿的环境…

基于CNN-BiGUR的恶意域名检测方法

本文提出了一种基于 CNN 和 BiGRU 的恶意域名检测方法 CNN-BiGRU-Focal。利用卷积神经网络(CNN)提取域名字符的局部上下文特征。利用双向门控循环单元网络(BiGRU)捕捉域名字符序列的时间序列特征。同时,引入改进的 Foc…

十三、MySQL高级—读写分离(6)

🌻🌻 目录 一、Mycat 介绍1.1 是什么1.2 干什么的1.3 原理 二、安装启动2.1 解压缩文件拷贝到linux下 /usr/local/2.2 三个文件2.3 启动前先修改schema.xml(配置)2.4 再修改server.xml2.5 验证数据库访问情况2.6 启动程序2.7 启动…

Hive SQL子查询应用

目录 环境准备看如下链接 子查询 查询所有课程成绩均小于60分的学生的学号、姓名 查询没有学全所有课的学生的学号、姓名 解释: 没有学全所有课,也就是该学生选修的课程数 < 总的课程数。 查询出只选修了三门课程的全部学生的学号和姓名 环境准备看如下链接 环境准备h…