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

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

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

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

完整代码:

# -*- coding:utf-8 -*-
from urllib import request,parse
import json
import jsonpath
import sys
import time
def 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:数字公司会对我们的这个程序进行不友好的对待,至于为什么我也很想知道……)
这里写图片描述

猜你喜欢

转载自blog.csdn.net/katyusha1/article/details/78373906