利用python实现一个在线查词软件,效果如图
1.观察网页结构,确定方法
待会要用到的有三处:链接,headers,和data,gui就采用最简单的tkinter,网页请求用requests,解析数据用json
url = "https://aidemo.youdao.com/trans"
headers = {
'Accept': 'application/json, text/javascript, */*; q=0.01',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Origin': 'http://ai.youdao.com',
'Referer': 'http://ai.youdao.com/product-fanyi.s',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
}
data = {
'from': 'Auto',
'to': 'Auto'
}
准备好之后访问会返回一个json字符串,可以用python自带的json进行解析
所用代码如下
#!/usr/bin/python3
from tkinter import *
import requests
import json
root=Tk()
entry1=Entry(root,width=50)
entry1.pack()
value1=StringVar()
value2=StringVar()
def query():
url = "https://aidemo.youdao.com/trans"
headers = {
'Accept': 'application/json, text/javascript, */*; q=0.01',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Origin': 'http://ai.youdao.com',
'Referer': 'http://ai.youdao.com/product-fanyi.s',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
}
data = {
'from': 'Auto',
'to': 'Auto'
}
data['q']=entry1.get()
response = requests.post(url=url, headers=headers, data=data)
cihui = json.loads(response.content)
entry2.select_clear()
entry2.insert(0, cihui['web'][0]['value'])
button = Button(root, text="query", command=query).pack()
entry2 = Entry(root,textvariable=value2,width=50)
entry2.pack()
root.mainloop()
总结
代码量不多,关键是分析站的时间比较多,如分析返回的数据结构,构建索引,json一般采用json库就行,如果是在网页中爬取的话,则可以采用字符串匹配,
和一个比较新的pyquery库----->即像jQuery一样对数据进行查找。
还有gui库,由于本次功能简单就使用了本身的tkinter,有兴趣可以试一下pyqt,wxpython,不过我没用过
其实可以用一个库把代码 打包成exe程序,不过建议最好别这样做,因为生成的文件很大,比如这个程序差不多十几兆左右,原理是将pytohn解释器和所用到的库全都打包到一起。
屌丝版查词软件就好了,忽略外观ok