天天上头条 发表于 2017-11-14 15:20:46

求大神帮忙看看:使用代理访问网页的问题

#使用代理机制
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)

p5494846 发表于 2017-11-20 17:22:29

构造了请求对象,就要把data变量放到这里吧,req = urllib.request.Request(url,data)

天天上头条 发表于 2017-11-21 14:07:44

p5494846 发表于 2017-11-20 17:22
构造了请求对象,就要把data变量放到这里吧,req = urllib.request.Request(url,data)

还是不行哦

purplenight 发表于 2017-11-23 10:55:14

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')]

bing_home 发表于 2017-11-24 16:20:12

不懂,学习学习

天天上头条 发表于 2017-11-24 17:05:12

purplenight 发表于 2017-11-23 10:55


追问下,为啥不能用字典定义呢

purplenight 发表于 2017-11-25 09:30:59

天天上头条 发表于 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)]
      ...

purplenight 发表于 2017-11-25 09:46:34

归根结底,urllib 操作的是OpenerDirector。--- 旧接口除外。
页: [1]
查看完整版本: 求大神帮忙看看:使用代理访问网页的问题