翻译爬虫实例--介绍爬虫API、JSON

Google 是目前为网民提供最全面、最好用的网络 API 套件(collection)的公司之一

https://developers.google.com/products/

https://console.developers.google.com/
Google 的开发者社区也提供了 API 用于获取语言翻译、分析、地理位置等信息


 API 用 JSON 或 XML 格式表示数据,而不是HTML 格式
利用 HTTP 从网络服务获取信息有四种方式:• GET• POST• PUT• DELETE
GET 就是你在浏览器中输入网址浏览网站所做的事情。
POST 基本就是当你填写表单或提交信息到网络服务器的后端程序时所做的事情。
PUT 在网站交互过程中不常用,但是在 API 里面有时会用到。 PUT 请求用来更新一个对象或信息。
DELETE 用于删除一个对象。

#百度通用翻译API,不包含词典、tts语音合成等资源,如有相关需求请联系translate_api@baidu.com
# coding=utf-8

import http.client
import hashlib
import urllib
import random
import json

def BaiduTransAPI(content):
    appid = '20200423000427418'  # 填写你的appid
    secretKey = 'zlRaKGvVjXLOTFJFt7DO'  # 填写你的密钥

    httpClient = None
    myurl = '/api/trans/vip/translate'

    fromLang = 'auto'   #原文语种
    toLang = 'en'   #译文语种
    salt = random.randint(32768, 65536)
    q= content
    sign = appid + q + str(salt) + secretKey
    sign = hashlib.md5(sign.encode()).hexdigest()
    myurl = myurl + '?appid=' + appid + '&q=' + urllib.parse.quote(q) + '&from=' + fromLang + '&to=' + toLang + '&salt=' + str(
    salt) + '&sign=' + sign

    try:
        httpClient = http.client.HTTPConnection('api.fanyi.baidu.com')
        httpClient.request('GET', myurl)

        # response是HTTPResponse对象
        response = httpClient.getresponse()
        result_all = response.read().decode("utf-8")
        result = json.loads(result_all)
        return result['trans_result'][0]['dst']

    except Exception as e:
        print (e)
    finally:
        if httpClient:
            httpClient.close()

如下图所示,百度翻译界面右键-检查-NetWork-XHR可以看到如下界面,Request Method为GET,所以可以使用GET方法获取

 

JSON 比 XML 更受欢迎

主要有两个原因。首先, JSON 文件比完整的 XML 格式小,另一个原因是网络技术的改变

例如下面的 XML 数据用了 98 个字符:

<user><firstname>Ryan</firstname><lastname>Mitchell</lastname><username>Kludgist
</username></user>

同样的 JSON 格式数据只要用 73 个字符,比表述同样内容的 XML 文件要小 36%

{"user":{"firstname":"Ryan","lastname":"Mitchell","username":"Kludgist"}}

Python 使用了一种更加灵活的方式,把 JSON 转换成字典, JSON 数组转换成列表,JSON 字符串转换成 Python 字符串。通过这种方式,就可以让 JSON 的获取和操作变得非常简单。

from urllib import request, parse
import json

def youdao(i):
    req_url = 'http://fanyi.youdao.com/translate'  # 创建连接接口
    # 创建要提交的数据
    Form_Date = {}
    Form_Date['i'] = i
    Form_Date['doctype'] = 'json'
    Form_Date['form'] = 'AUTO'
    Form_Date['to'] = 'AUTO'
    Form_Date['smartresult'] = 'dict'
    Form_Date['client'] = 'fanyideskweb'
    Form_Date['salt'] = '1526995097962'
    Form_Date['sign'] = '8e4c4765b52229e1f3ad2e633af89c76'
    Form_Date['version'] = '2.1'
    Form_Date['keyform'] = 'fanyi.web'
    Form_Date['action'] = 'FY_BY_REALTIME'
    Form_Date['typoResult'] = 'false'

    data = parse.urlencode(Form_Date).encode('utf-8')  # 数据转换
    response = request.urlopen(req_url, data)  # 提交数据并解析
    html = response.read().decode('utf-8')  # 服务器返回结果读取
    translate_results = json.loads(html)  # 以json格式载入
    translate_results = translate_results['translateResult'][0][0]['tgt']  # json格式调取

    return translate_results;  # 返回结果

此处,获得translate_results时先用Python的JSON库解析获得的JSON数据,然后以字典、列表的形式访问的JSON元素

进入有道翻译,右键-检查-NetWork-XHR-Name中的某一项-Response可以看到返回得到的JSON数据



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值