|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
第一,修改head 参数无效 或是说没有 add_header(key,val)
第二,查帮助文档,查询的是Request.add_header(key,val),怎样理解?Python版本3.6.0- import urllib.request
- import urllib.parse
- import json
- import time
- while True:
- content = input("请输入需要翻译的内容:(输入wq,退出程序)\n")
- if content =='wq':
- break
- else:
- url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=dict2.index'
- data = {}
- '''
- head ={}
- head['User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.22 Safari/537.36 SE 2.X MetaSr 1.0'
- '''
- data['type'] = 'AUTO'
- data['i'] = content
- data['doctype'] = 'json'
- data['xmlVersion'] = '1.8'
- data['keyfrom'] = 'fanyi.web'
- data['ue'] = 'UTF-8'
- data['action'] = 'FY_BY_CLICKBUTTON'
- data['typoResult'] = 'true'
- data = urllib.parse.urlencode(data).encode('utf-8')
- response = urllib.request.urlopen(url,data)
- response.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.22 Safari/537.36 SE 2.X MetaSr 1.0')
- # 隐藏的第二种方法是:response.add_header(),删掉head,追加head
- html = response.read().decode('utf-8')
- target = json.loads(html)
- print(target['translateResult'][0][0]['tgt'])
- time.sleep(1)
复制代码
只是你的调用顺序问题
add_header是放在urllib.request.urlopen之前
你最重要少了几句
req =urlib.request.Request(url,data)
req.add_header('Refer','http://fanyi.youdao.com')
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.22 Safari/537.36 SE 2.X MetaSr 1.0')
然后在调用response = urllib.request.urlopen(url,data)
到了urlopen已经是建立对象后进行访问,这个时候你的Request缺少header,导致你再去设置head会显示head无效
|
|