1. 首要任务是分析流程
当我们在百度翻译中点下面那个按键的时候会发生什么?
我们可以在浏览器自带的开发者工具中看到。
既然是点击即是提交数据,我们肯定是从POST方法入手。
Request URL 是我们请求的URL;
Form Data 则是我们提交的表单;
好啦,这样就万事具备啦。
2. 编写我们的代码
# -*- coding:UTF-8 -*-
from urllib import request
from urllib import parse
from urllib import error
import sys
import io
if __name__ == "__main__":
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8')
requestURL = 'http://fanyi.baidu.com/v2transapi'
# 这边是根据上面的Form data来设置我们的表单数据
Form = {}
Form['from'] = 'zh'
Form['to'] = 'en'
Form['query'] = '酸奶'
Form['transtype'] = 'translang'
Form['simple_means_flag'] = '3'
# 将表单数据编译成网站可以理解的语言.
data = parse.urlencode(Form).encode('utf-8')
try:
response = request.urlopen(requestURL, data)
html = response.read().decode('UTF-8')
except error.HTTPError as e:
print('HTTPError')
print(e.code)
except error.URLError as e:
print('URLError')
print(e.reason)
得出这样一大串数据,但能明显看出是JSON数据。
所幸的是,python有自带的json解析包
加入json解析后的代码与结果如下:
接下来就是获取的结果的时候:
# -*- coding:UTF-8 -*-
from urllib import request
from urllib import parse
from urllib import error
import sys
import io
import json
if __name__ == "__main__":
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8')
requestURL = 'http://fanyi.baidu.com/v2transapi'
Form = {}
Form['from'] = 'zh'
Form['to'] = 'en'
Form['query'] = '酸奶'
Form['transtype'] = 'translang'
Form['simple_means_flag'] = '3'
# 将表单数据编译成网站可以理解的语言.
data = parse.urlencode(Form).encode('utf-8')
try:
response = request.urlopen(requestURL, data)
html = response.read().decode('UTF-8')
translate = json.loads(html)
translate = translate['trans_result']['data'][0]['result'][0][1]
print("翻译的结果是:%s" % translate)
except error.HTTPError as e:
print('HTTPError')
print(e.code)
except error.URLError as e:
print('URLError')
print(e.reason)
3 .小结
因为现在很多操作都需要提交表单,
所以今天就小试了一下。