python3爬虫攻略(5):翻译程序打包及代码优化

来源:互联网 发布:大专 云计算与应用技术 编辑:程序博客网 时间:2024/05/18 07:52

上一篇我们写了一个简单的翻译程序,但是大家有没有发现一个bug?
如果一不小心按了回车键会发生什么情况?
这里写图片描述
如果输入的字符为空的话,下面的if判断程序当然无法执行咯!
解决方法:

while len(query)==0:    query=input("请输入想要翻译的句子或单词:")

运行效果:
这里写图片描述
然后问题又来了,每次翻译过后程序就会自动退出,那么我们该怎么做到我想一直使用就使用,我不想使用就退出了。
这里我们可以在程序结尾提示用户输入,如果输入指定的字符就退出,否则的话就让程序一直进行下去。
这里写图片描述
这里我们将原来的程序封装成了一个函数,如果想要一直执行就是用递归!

完整代码:

# -*- coding:utf-8 -*-from urllib import request,parseimport jsonimport jsonpathimport sysimport timedef main():    #提交表单需要的三个数据    from1=""    to=""    query=""    '''        query:准备查询的句子        from1:句子是中文还是英文        to:准备翻译成中文还是英文    '''    query=input("请输入想要翻译的句子或单词:")    while len(query)==0:        query=input("请输入想要翻译的句子或单词:")    '''        通过ord判断输入的句子的第一个字符是否是英文        如果输入的是中文,那么则是中文转英文        如果输入的是英文,那么则是英文转中文    '''    if ord(query[0]) not in range(97,123) and ord(query[0]) not in range(65,91):        from1="zh"        to="en"    else:        from1="en"        to="zh"    #提交post表单的地址,从fiddler中得到的    url="http://fanyi.baidu.com/v2transapi"    headers={ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"}    #表单数据    data={            "from":from1,            "to":to,            "query":query,            "transtype":"realtime",            "simple_means_flag":3           }    #处理成url编码    data = parse.urlencode(data).encode('utf-8')    req = request.Request(url, headers=headers, data=data)    html = request.urlopen(req).read().decode("utf-8")    #把json对象转换成python对象    jsonobj=json.loads(html)    #从根节点开始匹配,分别匹配到data和dst节点    data=jsonpath.jsonpath(jsonobj,"$..data..dst")    print("翻译结果:%s"%data[0])    time.sleep(1)    #判断程序是否结束    command=input("\n想要结束请输入Q/q:\n按回车键继续………………\n")    if command=="Q" or command=="q":        print("谢谢你的使用!")        sys.exit()    #如果没有结束则开始递归    else:        main()if __name__ == '__main__':    main()

运行效果
这里写图片描述

最后在暴力一点,将程序打包成exe可执行文件。
这里需要使用pyinstaller,不会的老铁们,可以参考我的另一篇文章:http://blog.csdn.net/katyusha1/article/details/78373394
pyinstaller的安装与使用

好了直接放大招,cmd进入到py文件所在的位置,执行pyinstaller -F xxx.py
这里写图片描述

这里写图片描述
程序运行效果
这里写图片描述
(ps1:如果生成文件不能执行的话,先使用 pyinstaller -d xxx.py 看一看dist文件夹中的debug情况,然后在生成打包好的可执行程序)
(ps2:数字公司会对我们的这个程序进行不友好的对待,至于为什么我也很想知道……)
这里写图片描述

阅读全文
0 0