1.百度翻译爬虫获取翻译结果
1.1 先了解一下get和post两种HTTP的请求方式
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
对于POST请求,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
(原文章:https://zhuanlan.zhihu.com/p/22536382 来源:知乎)
1.2使用Google浏览器搜索百度翻译,按f12检查元素,找到v2transapi。
1.3 找到headers下的url
1.4 找到发送的数据。
1.5 程序
# -*- coding: UTF-8 -*-
import urllib.request
import json
content=0
while True:
content=input("请输入需要翻译的内容:")
if content!='quit':
url="http://fanyi.baidu.com/transapi"
data={}
data['from']='zh'
data['to']='en'
data['query']=content
data['transtype']='realtime'
data['simple_means_flag']='3'
data['sign']='708867.930354'
data['token']='014b025209d54f068275defdc42850e2'
data=urllib.parse.urlencode(data).encode("utf-8")
response=urllib.request.urlopen(url,data)
html=response.read().decode("utf-8")
target=json.loads(html)
#print(target)
tgt=target['data'][0]['dst']
print("翻译的结果是:%s"% tgt)
else:
break
1.6运行结果
2.有道翻译爬虫获取翻译结果
2.1 用EDG浏览器查看有道翻译的请求方式
1.搜索有道翻译,按f12检查元素,输入一个想要翻译的内容。选择“网络”,点击“post”方法的内容。
2.请求接收的地址如下图箭头所示,编程时要用到这个url
3.查看发送的请求内容,后边编程会用到。
1.3 代码
# -*- coding: UTF-8 -*-
from urllib import request, parse
import json
content=''
if __name__ == '__main__':
while True:
content = input("请输入需要翻译的内容:")
if content == 'quite':
break
else:
# 创建连接接口,这时要去掉原链接translate后边的_0。
req_url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
#创建要提交的数据
Form_Date = {}
Form_Date['i'] = content
Form_Date['doctype'] = 'json'
Form_Date['form'] = 'AUTO'
Form_Date['to'] = 'AUTO'
Form_Date['smartresult'] = 'dict'
Form_Date['client'] = 'fanyideskweb'
Form_Date['salt'] = '1533907852152'
Form_Date['sign'] = '99bd0444087044ed238936cc5bd168f1'
Form_Date['version'] = '2.1'
Form_Date['keyform'] = 'fanyi.web'
Form_Date['action'] = 'FY_BY_REALTIME'
Form_Date['typoResult'] = 'false'
data = parse.urlencode(Form_Date).encode('utf-8') # 数据转换,将字典中的信息进行url编码
response = request.urlopen(req_url, data) # 提交数据并解析
html = response.read().decode('utf-8') # 服务器返回结果读取
# 可以看出html是一个json格式
translate_results = json.loads(html) # 以json格式载入
translate_results = translate_results['translateResult'][0][0]['tgt'] # json格式调取
print(translate_results) # 输出结果
运行结果图