关于Python入门视频055讲,有两个问题
第一,修改head 参数无效 或是说没有 add_header(key,val)第二,查帮助文档,查询的是Request.add_header(key,val),怎样理解?Python版本3.6.0import 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']['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无效 lumber2388779 发表于 2017-3-12 09:08
只是你的调用顺序问题
add_header是放在urllib.request.urlopen之前
你最重要少了几句
明白了,确实是这样。感恩!!!
页:
[1]