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

通过上面学习的只是,我决定利用百度翻译的接口,写一个简单的翻译小程序。
上一次我们学习了提交表单的案例,那么我们就趁热打铁,写一个简单的翻译程序。
这里我们要引入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 json
import 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,parse
import json
import 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!

猜你喜欢

转载自blog.csdn.net/katyusha1/article/details/78369484
今日推荐