python爬虫小记----百度翻译api的使用

2019-02-18  本文已影响0人  wangber

#python 爬虫小记1--百度翻译API使用
偶遇python2与3的一些改变:
cookielib 模块改名为 http.cookiejar


今天尝试利用python写一个爬虫程序,实现对百度翻译的一个简单搬运,后来发现百度提供了翻译的使用接口,提供了秘钥和appid,直接利用他提供的接口进行访问就能返回翻译结果。。。。。。。。
这样就感觉没有什么意思,,,,但是还是暂时利用这个接口,弄了一个小东西。
参照官方提供的demo,主要包括:


构造URL
访问URL
解析返回结果


json模块:

JSON到字典转化:
dictinfo = json.loads(json_str) 输出dict类型

字典到JSON转化:
jsoninfo = json.dumps(dict)输出str类型

info = {'name' : 'jay', 'sex' : 'male', 'age': 22}
jsoninfo = simplejson.dumps(info)
print jsoninfo 

Unicode到字典的转化:
json.loads()
比如:

import json
str = '{"params":{"id":222,"offset":0},{"nodename":"topic"}'
params = json.loads(str)
print params['params']['id']

核心代码

在百度中提供的demo中,运用语言为python2,而我使用的是python3,因此有些库的使用有修改。

构造URL

注册成为百度翻译开发者,可以利用官方给的appid和秘钥,利用字符串拼接的方法构造url:

import http.client
import hashlib #md5替换
import urllib 
import random
import requests
import json
def creaturl(yuan,mubiao,txt):#接收三个字符串参数
    appid = 'xxxxxxxx' #你的appid
    secretKey = 'xxxxxxxx' #你的密钥
    httpClient = None
    myurl = '/api/trans/vip/translate'
    q = txt
    fromLang = yuan
    toLang = mubiao
    salt = random.randint(32768, 65536)

    sign = appid+q+str(salt)+secretKey
    #对签名进行加密
    m2=hashlib.md5(sign.encode(encoding='UTF-8')).hexdigest()
    myurl = myurl+'?appid='+appid+'&q='+urllib.parse.quote(q)+'&from='+fromLang+'&to='+toLang+'&salt='+str(salt)+'&sign='+m2
    return myurl

利用requests模块get方法访问url接收返回网页并解析

def requ(myurl):     
    try:

        re=requests.get("https://fanyi-api.baidu.com"+myurl)
        dic=json.loads(re.text)
        print("翻译结果如下:")
        ##re.text是字符串类型,利用json模块中的loads函数把它转换为字典
        print(dic["trans_result"][0]["dst"])
    except Exception as e:
        print (e)

完整代码:

#/usr/bin/env python
 
import http.client
import hashlib #md5替换
import urllib 
import random
import requests
import json
import easygui as g

def creaturl(yuan,mubiao,txt):#接收三个字符串参数
    appid = 'xxxxxxx' #你的appid
    secretKey = 'xxxxxxxx' #你的密钥
    httpClient = None
    myurl = '/api/trans/vip/translate'
    q = txt
    fromLang = yuan
    toLang = mubiao
    salt = random.randint(32768, 65536)
    sign = appid+q+str(salt)+secretKey
    #对签名进行加密
    m2=hashlib.md5(sign.encode(encoding='UTF-8')).hexdigest()
    myurl = myurl+'?appid='+appid+'&q='+urllib.parse.quote(q)+'&from='+fromLang+'&to='+toLang+'&salt='+str(salt)+'&sign='+m2
    return myurl
def requ(myurl):     
    try:

        re=requests.get("https://fanyi-api.baidu.com"+myurl)
        dic=json.loads(re.text)
        print("翻译结果如下:")
        print(dic["trans_result"][0]["dst"])
    except Exception as e:
        print (e)
    
def main():

    yuan= input("请输入源语言:")
    mubiao=input("请输入目标语言:")
    txt=input("请输入目标内容:")
    my=creaturl(yuan,mubiao,txt)
    requ(my)
main()
上一篇下一篇

猜你喜欢

热点阅读