python简易有道词典
0.说明
通过浏览器跟踪【有道词典】和【有道翻译】网页查询过程,制作python简易字典。
代码案例在:https://github.com/suchocolate/test/tree/master/spider/simpledictionary
制作过程:
- 踩点查词
- 踩点翻译
- 制作程序
1.踩点有道词典
1.1 先踩点查英文单词
F12浏览器登陆有道词典网页,查看实际查英文词的URL是:http://dict.youdao.com/w/eng/dog/
记录一下查询结果的xpath,交给lxml.etree解析:
1.2 再查一下中文词
发现URL是:http://dict.youdao.com/w/%E7%8B%97/,这个“%E7%8B%97”是URL编码的中文,可以用urllib.parse里的quote制作。
2.踩点有道翻译
有道翻译的URL是:http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule。
后来发现向这个URL POST数据不会得到结果,真正的URL要把“_o”去掉。
翻译时,浏览器发送的是表单,那么到时封装到request的data里。
有道返回的是json,用json解析:
3.制作程序
# 请求网页用
from urllib import request, parse
# 制作转化中文为URL格式
from urllib.parse import quote
# 分析库
from lxml import etree
# 用tkinter做图形化
from tkinter import *
# 解析json数据
import json# 英文单词查询网址
ebase = 'http://dict.youdao.com/w/eng/'
# 中文单词查询网址
cbase = 'http://dict.youdao.com/w/'
# 翻译网址
trans = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
# 查询时http头
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0"}
# 翻译提交的字典
dic = {"doctype": "json"}# 判断查询类型,1是查词,2是翻译。
def chaxun():if v.get() == 1:chaci()else:fanyi()# 定义查词函数:
def chaci():wd = e1.get()# 如果是中文查询,转换中文为URL编码格式,中文unicode编码范围。if '\u4e00' <= wd <= '\u9fff':# 转中文为URL编码wd = quote(wd)url = cbase + wdq = request.Request(url=url, headers=headers)r = request.urlopen(q, timeout=2)html = etree.HTML(r.read().decode('utf-8'))# 查中文时的xpath和英文的xpath不同result = html.xpath('/html/body/div[1]/div[2]/div[1]/div[2]/div[2]/div[1]/div/ul/p/span/a/text()')else:url = ebase + wdq = request.Request(url=url, headers=headers)r = request.urlopen(q, timeout=2)html = etree.HTML(r.read().decode('utf-8'))# 查英文词的xpathresult = html.xpath('/html/body/div[1]/div[2]/div[1]/div[2]/div[2]/div[1]/div/ul/li/text()')# 清理text,重新显示text1.delete(1.0, END)# 如果有结果,显示结果if len(result) != 0:for pt in result:text1.insert(INSERT, pt + '\n')else:# 如果没有结果,提示没有结果text1.insert(INSERT, 'There is no explain.')# 翻译
def fanyi():# 清除文本框中的内容text1.delete(1.0, END)# 获取输入框的字,复制给变量wd,装入字典wd = e1.get()dic['i'] = wddata = bytes(parse.urlencode(dic), encoding='utf-8')# 开始翻译q = request.Request(url=trans, data=data, headers=headers, method='POST')r = request.urlopen(q)# 得到的结果是json数据,result = json.loads(r.read().decode('utf-8'))# 数据处理后放入输入框text1.insert(INSERT, result['translateResult'][0][0]['tgt'])if __name__ == '__main__':# 主函数,定义一个tk对象root = Tk()root.title('简易有道词典')# 定义一个说明标签l1 = Label(root, text='请输入要查询的内容:')l1.grid(row=0, column=0)# 定义一个输入框e1 = Entry(root)e1.grid(row=0, column=1, padx=1, pady=5)# 定义一个按钮bt1 = Button(root, text='查询', command=chaxun)bt1.grid(row=0, column=2, padx=5, pady=5)# 定义一个文本框text1 = Text(root, width=59, height=10)text1.grid(row=1, columnspan=5, padx=5, pady=7)# 定义一个单选变量,初始值1,即默认是查词v = IntVar()v.set(1)# 定义一个单选框Radiobutton(root, text="查词", variable=v, value=1).grid(row=0, column=3)Radiobutton(root, text="翻译", variable=v, value=2).grid(row=0, column=4)# 循环窗体mainloop()
运行的效果
python简易有道词典相关推荐
- python有道翻译-Python调用有道词典翻译
Python调用有道词典翻译 分析 翻译按钮 点击翻译按钮,查看网络请求,如图 共有四个网络请求,通过分析,查看返回的信息,显然第一个是真正的翻译请求,具体信息如下: 如图所示,我们真正关注的是请求参 ...
- python有道-Python调用有道词典翻译
Python调用有道词典翻译 分析 翻译按钮 点击翻译按钮,查看网络请求,如图 共有四个网络请求,通过分析,查看返回的信息,显然第一个是真正的翻译请求,具体信息如下: 如图所示,我们真正关注的是请求参 ...
- python调用有道词典_菜鸟上手Python最有野心的库Asyncio
Asyncio是Python中非常牛逼的一个异步并发库,比较复杂不太好理解!从Py3.4之后开始加入这个内置并发库,一举解决了Python中高并发的问题.它提供了一整套异步IO模型的编程接口,可以说它 ...
- python读音有道词典-有道词典命令行快速翻译,Python编程的利器
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 以下文章来源于Python实用宝典,作者Python实用宝典 在编程时经常会遇到 ...
- python读音有道词典-利用python实现命令行有道词典的方法示例
前言 由于一直用Linux系统,对于词典的支持特别不好,对于我这英语渣渣的人来说,当看英文文档就一直卡壳,之前用惯了有道词典,感觉很不错,虽然有网页版的但是对于全站英文的网页来说并不支持.索性自己实现 ...
- python利用有道词典翻译_使用Python从有道词典网页获取单词翻译
从有道词典网页获取某单词的中文解释. import re import urllib word=raw_input('input a word\n') url='http://dict.youdao. ...
- python爬虫有道词典_Python爬取有道词典,有道的反爬很难吗?也就这样啊!
前言 大家好 最近python爬虫有点火啊,啥python爬取马保国视频--我也来凑个热闹,今天我们来试着做个翻译软件--不是不是,说错了,今天我们来试着提交翻译内容并爬取翻译结果 主要内容 PS ...
- python有道字典_Linux下自制有道词典 - python 解密有道词典JS加密
对于爬虫新手来说,JS解密是一道过不去的坎,需要不断地练习. 平时在linux下开发,鉴于没有什么好用翻译软件,打开网易也占用系统资源,所以写了个在控制台的翻译软件接口. 使用python爬虫,查看网 ...
- python利用有道词典翻译_Python利用有道词典接口制作即时翻译的工具
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于Python 实用宝典,作者Python 实用宝典 前言 在编程时经 ...
最新文章
- 单元测试 Mocking 类库需具备的特性
- 用 Spark 为 Elasticsearch 导入搜索数据
- 细说PHP中strlen和mb_strlen的区别
- Android视图组成View
- python全局变量global线程安全_对python多线程与global变量详解
- python 内建函数basestring笔记
- android 清除应用程序数据,清除Android应用程序用户数据
- 【转】网络安全-------防止被抓包
- Pytorch使用记录
- 02: python3使用email和smtplib库发送邮件
- 大规模业务技术架构设计与战术(架构师必看)
- 实验报告四201521460014
- 通达OA 商务平台OA2017新版本简易评测(图文)
- android 滤镜lomo,iOS滤镜实现之LOMO(美图秀秀经典LOMO)(示例代码)
- AI视频生成工具 抖音短视频剪辑软件
- Win7安装CAD出现错误1606 最简单的解决方法
- 安装系统时,硬盘格式转换
- 第一次实验报告学习总结
- 20189220 余超《Linux内核原理与分析》第二周作业
- ESP32 Ubuntu开发环境搭建