英语没学好?不要紧!自己弄一个翻译软件就行了!Python打造!

英语没学好?不要紧!自己弄一个翻译软件就行了!Python打造!,第1张

概述用Charles爬取数据Windows用Fiddler也差不多。Charles是一个多平台的抓包工具,可以很方便的抓取http和https数据。

用Charles爬取数据

windows用fiddler也差不多。

Charles是一个多平台的抓包工具,可以很方便的抓取http和https数据。

1.抓取数据

抓取数据前我们首先要清楚,由于有道词典的翻译使用的是post请求,所以我们要抓取的信息有:url链接、request headers(请求头)、format data(数据表单,也即请求体request body)

a)打开Charles,选择Proxy选项卡中的macOS Proxy选项。

b)打开浏览器,输入网址 http://fanyi.youdao.com,然后在左边的输入框输入要翻译的内容。

c)打开Charles,点击左边的Structure选项卡,依次点击找到箭头指示的内容,可以在右边的OvervIEw选项卡中看到基本的请求信息,这里我们需要的url链接就出现了。

d)点击右边的content选项卡,再点击Raw选项卡,就可以看到原始的请求数据,红框所示是请求头信息,蓝框所示是请求体信息。

2. 整理数据

a)将找到url链接、请求头以及请求体数据复制到sublime编辑器中。

b)利用sublime的替换功能,将数据整理成我们写程序时想要的python中字典的形式。

2

代码实现

闲话不多说,先贴代码

import urllib.parse import urllib.request 

def youdao():

构建url链接url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'这里要去掉?号前面的_o,不然会进行加密算法,导致失败

url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'

构建请求头

headers = {
"User-Agent" : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:59.0) Gecko/20100101 firefox/59.0'
}
words = input("请输入要翻译的内容:")

构建请求体

format_data = {
'i': words,'from':'auto','to':'auto','smartresult':'dict','clIEnt':'fanyIDeskweb','salt':'1526368137702','sign':'f0cd13ef1919531ec9a66516ceb261a5','DOCTYPE':'Json','version':'2.1','keyfrom':'fanyi.web','action':'FY_BY_REALTIME','typoResult':'false'
}

进行url编码

format_data = urllib.parse.urlencode(format_data).encode("utf-8")

获取request文件(传入了data参数,就是post请求)

request = urllib.request.Request(url,data = format_data,headers = headers)

打开请求文件

response = urllib.request.urlopen(request)

读取文件内容

content = response.read()
content = eval(content)
ret = content["translateResult"][0][0]['tgt']

print(ret)
return ret

if name == "main":
youdao()

运行结果:

注意点:

1.如果使用原始的url进行爬取,会返回erro500的错误,我们需要将原始的请求url里面的"_o"去掉,这样服务器就不会进行验证。

2.代码对请求体进行了url编码后,还进行了二进制编码,因为http请求用的是二进制,所以要进行编码,才能发送post请求。

3.请求包体里面的'i',是我们用户输入的翻译内容,所以这是我们要自定义输入的地方。

3

图形界面

代码基本实现后,觉得有点无趣,就用python3自带的tkinter写了个小的图形界面出来,代码如下:

from tkinter import * import urllib.parse import urllib.request 

def youdao(words):

构建url

url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'

构建请求头

headers = {
"User-Agent" : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:59.0) Gecko/20100101 firefox/59.0'
}

构建请求体

format_data = {
'i': words,'typoResult':'true'
}

进行url编码

format_data = urllib.parse.urlencode(format_data).encode("utf-8")

获取request文件(传入了data参数,就是post请求)

request = urllib.request.Request(url,headers = headers )

打开请求文件

response = urllib.request.urlopen(request)

读取文件内容

content = response.read()
content = eval(content)
ret = content["translateResult"][0][0]['tgt']

print(ret)
return ret

主程序

root = Tk()

设置标题

root.Title("呆瓜词典")

设置主窗口大小

root.geometry("320x150")

可变大小

root.resizable(wIDth=False,height=True)

第一排输入框 输入查询的内容左边是一个标签

l1 = Label(root,text = '查询内容',bg = "yellow",Font = (12),height = 1,wIDth = 8)
l1.place(x = 20,y = 20)
var1 = StringVar()
input_text = Entry(root,textvariable = var1)
input_text.place(x = 100,y = 20)

第二排显示框 显示查询的结果左边是一个标签

l2 = Label(root,text = '查询结果',wIDth = 8)
l2.place(x = 20,y =60)
var2 = StringVar()
output_text = Entry(root,textvariable = var2)
output_text.place(x = 100,y =60)

调用youdao函数,传进要翻译的内容

def func():
words = var1.get()
if words:

print(words)

result = youdao(words)
var2.set(result)

添加一个按钮

b = button(root,text = "查询",command = func)
b.place(x = 170,y = 100)

运行主程序

root.mainloop()

进群:960410445  即可获取源码!

运行效果:

中英文都可以翻译,至此任务就完成了。

总结

以上是内存溢出为你收集整理的英语学好不要紧!自己弄一个翻译软件就行了!Python打造!全部内容,希望文章能够帮你解决英语没学好?不要紧!自己弄一个翻译软件就行了!Python打造!所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1208396.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存