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) # 输出结果
运行结果图