Python模拟搜狗翻译发送请求
开发工具与关键技术:Python IDEL、Python
作者:曾浩源
撰写时间:2019年08月07日
写一个小功能来模拟搜狗翻译发送请求,让这个小功能拥有翻译的功能。
首先打开搜狗翻译,然后F12或右键选择检查,找到Network,再搜狗翻译内进行一次翻译,之后Name下就出现一堆东西,如:
看着大概也知道,出来translateV2、suggV2和translateV2ForPicSet其余都是一些图片,以上三个都是post请求,这里选择的是suggV2,它是释义而且传的数据也少所以选它了,至于其他两个,到时候自己试试吧。
从这里就可以知道了请求url地址(Requset URL),和所要传输的数据(From Data)
接下来就是将所要的内容赋予我们Python里的变量:
url="https://fanyi.sogou.com/reventondc/suggV2"data={}data["from"]="auto"data["to"]="zh-CHS"data["client"]="pc"data["text"]=contentdata["uuid"]="a494de6c-0c2c-4e1d-a6be-be70df3c2dfa"data["pid"]="sogou-dict-vr"data["addSugg"]="on"
之后就是发送数据,但这是post请求,不是get请求,get请求直接拼接所要传输的数据就行了,而post请求要被编码为字节数据,所以我们要转编码。
发送数据就是请求,和转编码它们需要我们在python内引用urllib模块.
请求要urllib内的request(urllib.request 用于打开网址的可扩展库。)、转编码需要urllib内的parse(urllib.parse URL解析组件)
所以在最前面引入需要的模块
import urllib.request
import urllib.parse
在data赋值完成后,将data转码为utf-8,这要看别人网页的请求头是啥了,现在一般都是utf-8。
在Python中,我们通常使用urllib中的urlencode方法将字典编码,所以:
data = urllib.parse.urlencode(data).encode('utf-8')
编码完成后就可以直接使用urllib.request.urlopen()方法向要打开的url链接发送我们的数据data 了:
response = urllib.request.urlopen(url,data)
响应后,我们需要读取响应,再把它转码为utf-8
html = response.read().decode('utf-8')
读取到之后,但它是字符串形式:
发现它很像是一个字典,其实就是字典的字符串格式,我们现在就需要把它从字符串转为字典,这里需要引用一个模块,json模块。
在代码最上面的引用代码后加入
import json
获取到响应回来的内容赋值给html后,转为字典如下:
target=json.loads(html)
输出:
我们需要的是 键:data的值,它的值是一个列表,需要第一个也就是索引0,列表里又是字典,需要的是 键:v的值
所以:
target=target['data'][0]["v"]print("翻译结果:%s" % target)
完整的一些小修改后的代码:
import urllib.request
import urllib.parse
import json
import time
import randomwhile True:content=input("请输入需要翻译的内容(输入q!退出程序):")if content == 'q!':breakurl="https://fanyi.sogou.com/reventondc/suggV2"data={}data["from"]="auto"data["to"]="zh-CHS"data["client"]="pc"data["text"]=contentdata["uuid"]="a494de6c-0c2c-4e1d-a6be-be70df3c2dfa"data["pid"]="sogou-dict-vr"data["addSugg"]="on"data = urllib.parse.urlencode(data).encode('utf-8')req =urllib.request.Request(url,data)req.add_header("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.3704.400 QQBrowser/10.4.3587.400")response=urllib.request.urlopen(req)html=response.read().decode('utf-8')target=json.loads(html)if not 'data' in target:print('没有该翻译!')else:target=target['data'][0]["v"]print("翻译结果:%s" % target)time.sleep(2)
Python模拟搜狗翻译发送请求相关推荐
- 爬虫模拟对“有道在线翻译”发送请求(请求中的数据含需分析js来解出变化数据)
每日分享: 做好自己 世界上没有一份工作不辛苦,也没有一处人事不复杂,无论你当下正在经历什么,都要调整好心态,继续前行,继续努力! 总有人嫌你不够好,也总有人觉得你哪里都好,爱你的人自然会爱你,不爱你 ...
- python 自制搜狗翻译工具
一.登陆搜狗翻译页面,分析请求 1.url地址:https://fanyi.sogou.com/ 在里面输入中文翻译 可以看出,请求的地址为 https://fanyi.sogou.com/reven ...
- python模拟postman发https请求_【接口测试】Postman入门01-特点和简介
原文链接: https://www.getpostman.com/postman 翻译:凯凯 Postman简介 Postman是最完整的API测试开发环境,可以使得API测试开发变得更快.更好.更容 ...
- 如何使用soapUI模拟webservice客户端发送请求
随着软件行业的发展,一个完成的系统已经不能使用简单的项目来完成,而是有多个项目之间相互协同工作,项目之间就需要进行即时通讯,现在比较流行的通讯方式是通过webservice服务.比较流程的webser ...
- php使用axios发送请求,axios源码之模拟实现axios发送请求
axios内部运作流程大致如下axios入口- ->axios构造函数- ->interceptors请求拦截器- ->dispatchRequest方法- ->transfo ...
- requests_模拟搜狗翻译
01笔记 在搜狗翻译的url中,请求的方法是Post,所以我们需要通过requests.post方法来请求数据: 接着url的请求参数是一个字典,所以我们需要修改该字典参数的搜索关键词,且其 ...
- python通过requests库发送请求
文章目录 一.requests库 二.发送请求 1.发送get请求 2.传递url参数 (1)直接通过url传递 (2)通过字符串传递 (3)通过字典传递 3.发送post请求 (1)提交form表单 ...
- 使用JMeter模拟多IP发送请求(IP欺骗)
文章目录 (一)IP欺骗的使用场景 (二)JMeter如何设置IP欺骗 (1)获取可用IP (2)配置IP (3)JMeter中配置IP欺骗 (三)注意 前言:如果精通LoadRunner,可以直接使 ...
- python客户端通过代理发送请求
国外有些网站被屏蔽或者访问较慢,通过找代理服务器来访问,加快访问速度. 这边本地运行反向代理,一开始认为在port 8088,后来netstat发现在本地的8087. 于是python使用urllib ...
最新文章
- 文件 服务器 要求,文件服务器硬件要求
- git 常用命令_git常用命令的使用
- Android中Intent的显示和隐式使用
- 我的电脑不联网,很安全,黑客:你还有风扇呢。。。
- linux 基础命令总结
- @90后程序员,“颜值即正义”的现在,程序员应该如何更新穿搭?
- intptr_t 和 uintptr_t类型使用总结
- 记录“麻辣香锅”病毒处理过程
- 对视频马赛克的调研学习报告
- nginx实现均衡负载、nginx第三方模块的添加
- 北京大学生物信息学(9)第二代基因组测序技术
- Remote table-valued function calls are not allowed.
- python简单代码画曲线图教程-python画曲线
- win10-SW2016工程图关联零件属性链接操作
- Linux - 系统文件目录说明
- 环境在线监测监控系统
- python QQ邮件发送
- 下载软件-我爱分享网
- 无线通信基础知识7:射频器件的基本参数3
- 高校计算机教师swto分析,教师个人SWOT分析.doc
热门文章
- 申请注册公司需要什么材料
- mysql第五章 在线测试_PHP+MySQL实现在线测试答题示例
- DeepSORT论文翻译(SIMPLE ONLINE AND REALTIME TRACKING WITH A DEEP ASSOCIATION METRIC)
- 用Hyperledger cello的0.9.0-h3c分支创建一套区块链系统
- 案例分享 | TensorFlow 在贝壳找房中的实践
- 计算机课程设计收费管理系统,C语言机房收费管理系统课程设计
- python的excel-python操作Excel的几种方式
- batT脚本如何自动执行 adb shell 以后的命令(android抓包)
- pytorch获取模型的中间层输出结果
- python day 07