Python爬取百度翻译(用python 爬取百度百科内容)
如何用python调用百度翻译
#/usr/bin/env?python
#coding=utf8
?
import?httplib
import?md5
import?urllib
import?random
appid?=?'20151113000005349'
secretKey?=?'osubCEzlGjzvw8qdQc41'
?
httpClient?=?None
myurl?=?'/api/trans/vip/translate'
q?=?'apple'
fromLang?=?'en'
toLang?=?'zh'
salt?=?random.randint(32768,?65536)
sign?=?appid+q+str(salt)+secretKey
m1?=?md5.new()
m1.update(sign)
sign?=?m1.hexdigest()
myurl?=?myurl+'?appid='+appid+'q='+urllib.quote(q)+'from='+fromLang+'to='+toLang+'salt='+str(salt)+'sign='+sign
?
try:
????httpClient?=?httplib.HTTPConnection('api.fanyi.baidu.com')
????httpClient.request('GET',?myurl)
?
????#response是HTTPResponse对象
????response?=?httpClient.getresponse()
????print?response.read()
except?Exception,?e:
????print?e
finally:
????if?httpClient:
????????httpClient.close()
在调用百度翻译api之前,您需要申请开发者权限,获取APP ID及密钥。 一个账号只能获得一个APP ID和密钥。
参考价格:若当月翻译字符数≤2百万,免费;若超过2百万字符,按照49元/百万字符支付当月全部翻译字符数费用。
参考?
python百度翻译爬虫
源页面获取的token必先向服务端post过后才有效果,sign是一层加密,token也是,源页面的id有效期长点,post过程用到了base64.encodebytes 以及 AES.CBC 加密等,我就知道这些,py调用js又会效率上不去
python语言翻译的过程是
“输入文本”—“翻译”—“得到译文”。详细步骤如下:
1、先输入文字。
2、首先调用两个需要到的第三方库,设置请求头,因为百度翻译反爬机制,经过观察只加密了sign数据,由代码计算,将js文件保存在根目录下。
3、设置data参数,获取cookies,发送 post请求,返回的是经过‘utf-8’编码后的字符串,我们要对其进行解码,并且转化为字典,直接对数据进行类型转换会报错“NameError: name 'null' is not defined”。
4、在数据(字典)中将我们要的结果提取出来。