python3爬虫攻略(4):简单的翻译程序

来源:互联网 发布:java和嵌入式哪个好 编辑:程序博客网 时间:2024/05/04 01:31

通过上面学习的只是,我决定利用百度翻译的接口,写一个简单的翻译小程序。
上一次我们学习了提交表单的案例,那么我们就趁热打铁,写一个简单的翻译程序。
这里我们要引入json和jsonpath
因为百度翻译获取的结果是一个json对象
如图所示
这里写图片描述
我们要做到的就是把翻译结果从json对象中提取出来,这就需要jsonpath了!
首先安装jsonpath:

下载地址:https://pypi.python.org/pypi/jsonpath
安装方法:点击Download URL链接下载jsonpath,解压之后执行python setup.py install

JSONPATH的简单使用
这里写图片描述

首先要将json对象转化为python对象
使用json.loads()
然后要取得拿破仑的翻译结果只需要找到根节点下面的data节点下面的dst节点就可以了
$..data..dst(这是这样就可以啦!)

import jsonimport jsonpath#把json对象转换成python对象jsonobj=json.loads(html)#从根节点开始匹配,分别匹配到data和dst节点data=jsonpath.jsonpath(jsonobj,"$..data..dst")

嗯!没错就是这么简单,这里只是简单的介绍一下,具体可以看看官方文档:http://goessner.net/articles/JsonPath

然后贴上所有的代码:

# -*- coding:utf-8 -*-from urllib import request,parseimport jsonimport jsonpath'''    query:准备查询的句子    from1:句子是中文还是英文    to:准备翻译成中文还是英文'''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])

运行效果图:
这里写图片描述
程序完美运行,不过这好像与爬虫无关,但是这又有什么关系呢?
这里写图片描述
人生苦短,我用Python!

原创粉丝点击