#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()
网友评论