python调用百度翻译

抓取百度翻译时,浏览器发送的http请求。

模拟这个发送请求,获取翻译结果。


python代码:

#!/usr/bin/env python
#coding:utf-8
#Author:liushsh

import sys
import logging
import logging.config
import re
import cookielib
import urllib,urllib2
import random
import json

logging.config.fileConfig("conf/logger.conf")
logger = logging.getLogger('root')

def Translation(en_str,zh_str):
	# set cookie process
	cj = cookielib.CookieJar()
	cookie_support = urllib2.HTTPCookieProcessor(cj)
	opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler)
	urllib2.install_opener(opener)

	# simulation browse load host url,get cookie
	# http://fanyi.baidu.com/v2transapi?from=en&to=zh&query=hello%20world&transtype=hash
	baidu_translation='''http://fanyi.baidu.com/v2transapi'''
	post_param={'from':'en','to':'zh','query':en_str,'transtype':'hash'}
	post_data=urllib.urlencode(post_param)

	hostUrl = baidu_translation 
	domain = urllib2.Request(hostUrl,post_data)
	f = urllib2.urlopen(domain)
	html = f.read()
	#logger.info("json:[%s]"%(html))

	j = json.loads(html)
	if j['trans_result']['data'][0]['dst'] != None:
		zh_str[0] = j['trans_result']['data'][0]['dst']
		logger.info("[%s]==>[%s]"%(en_str,zh_str[0]))
		return True
	return False

def main():
	argc=len(sys.argv)
	if argc < 2:
		print "Usage:%s 'hello world'"%(sys.argv[0])
		exit(0)

	for en_str in sys.argv[1:len(sys.argv)]:
		try:
			zh_str = [""]
			Translation(en_str,zh_str)
			print "[%s]==>[%s]"%(en_str,zh_str[0])
		except urllib2.URLError,e:
			logger.error("[except:%s]"%(e))
		except Exception,e1:
			logger.error("[except:%s]"%(e1))

if __name__ == "__main__":
	main()


运行结果:

liushsh@liushsh:~/python/http_operate/baidu$ python baidu_en_zh_v1.0.py 'hello world' 'world hello'
[hello world]==>[你好世界]
[world hello]==>[世界你好]


现在只做了英文翻译成中文,稍微改下

post_param={'from':'en','to':'zh','query':en_str,'transtype':'hash'}
这一行中的from和to的取值,应该可以用于其他语言之间的翻译。

可以使用百度翻译API提供的HTTP接口实现Python调用百度翻译的翻译接口。具体步骤如下: 1. 首先,需要在百度翻译API官网申请API Key和Secret Key,获取访问API的权限。 2. 在Python中使用requests库向API发送HTTP请求,并传入必要的参数和密钥信息。具体参数包括: - q:待翻译的文本 - from:源语言,可选,默认为auto - to:目标语言,必填 - appid:API Key - salt:随机数 - sign:签名,由app id + 待翻译文本 + salt + secret key进行MD5加密后得到 3. 解析API返回的JSON格式结果,获取翻译结果。 下面是一个简单的示例代码: ```python import requests import hashlib import random import json def translate(text, from_lang='auto', to_lang='en'): appid = 'your app id' secret_key = 'your secret key' salt = str(random.randint(32768, 65536)) sign = hashlib.md5((appid + text + salt + secret_key).encode('utf-8')).hexdigest() url = 'http://api.fanyi.baidu.com/api/trans/vip/translate' params = { 'q': text, 'from': from_lang, 'to': to_lang, 'appid': appid, 'salt': salt, 'sign': sign } response = requests.get(url, params=params) result = json.loads(response.text) return result['trans_result'][0]['dst'] ``` 在上面的代码中,我们定义了一个translate函数,它接受三个参数:待翻译的文本、源语言和目标语言。我们先计算出sign值,再将参数传入requests库的get方法中,向API发送HTTP请求。最后,我们解析API返回的JSON结果,并返回翻译结果。 注意:百度翻译API的免费使用有次数限制,如果需要更多的翻译次数,需要付费购买。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值