求大神帮忙看看:使用代理访问网页的问题
#使用代理机制ip_list=['221.237.154.57:9797','112.95.205.60:8888','112.95.24.181:8118']
content=input('请输入想要翻译的内容,如果是,则退出:')
url='http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
data={}
data['i']=content
data['from']='AUTO'
data['to']='AUTO'
data['smartresult']='dict'
data['client']='fanyideskweb'
data['salt']='1510569170831'
data['sign']='7adde2c43a6eb452e72893a3913e178b'
data['doctype']='json'
data['action']='FY_BY_CLICKBUTTION'
data['typoResult']='false'
data=urllib.parse.urlencode(data).encode('utf-8')
proxy_support=urllib.request.ProxyHandler({'http':random.choice(ip_list)})
opener=urllib.request.build_opener(proxy_support)
opener.addheaders={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.134 Safari/537.36'}
urllib.request.install_opener(opener)
#reponse = urllib.request.urlopen(url,data)
req = urllib.request.Request(url)
#reponse=urllib.request.urlopen(req)
reponse=opener.open(req,data)
html=reponse.read().decode(encoding='UTF-8')
print (html) 构造了请求对象,就要把data变量放到这里吧,req = urllib.request.Request(url,data) p5494846 发表于 2017-11-20 17:22
构造了请求对象,就要把data变量放到这里吧,req = urllib.request.Request(url,data)
还是不行哦 opener.addheaders=[('User-Agent','Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.134 Safari/537.36')] 不懂,学习学习 purplenight 发表于 2017-11-23 10:55
追问下,为啥不能用字典定义呢 天天上头条 发表于 2017-11-24 17:05
追问下,为啥不能用字典定义呢
文档 https://docs.python.org/3/library/urllib.request.html#examples, 有个例子是这样:
OpenerDirector automatically adds a User-Agent header to every Request. To change this:
import urllib.request
opener = urllib.request.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
opener.open('http://www.example.com/')
Python36\Lib\urllib\request.py 434行定义OpenerDirector
class OpenerDirector:
def __init__(self):
client_version = "Python-urllib/%s" % __version__
self.addheaders = [('User-agent', client_version)]
...
归根结底,urllib 操作的是OpenerDirector。--- 旧接口除外。
页:
[1]