鱼C论坛

 找回密码
 立即注册
查看: 9169|回复: 7

[已解决]求大神帮忙看看:使用代理访问网页的问题

[复制链接]
发表于 2017-11-14 15:20:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#使用代理机制
ip_list=['221.237.154.57:9797','112.95.205.60:8888','112.95.24.181:8118']
content=input('请输入想要翻译的内容,如果是[q],则退出:')
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)
最佳答案
2017-11-23 10:55:14
  1. 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')]
复制代码
917.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-11-20 17:22:29 | 显示全部楼层
构造了请求对象,就要把data变量放到这里吧,req = urllib.request.Request(url,data)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-21 14:07:44 | 显示全部楼层
p5494846 发表于 2017-11-20 17:22
构造了请求对象,就要把data变量放到这里吧,req = urllib.request.Request(url,data)

还是不行哦
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-23 10:55:14 | 显示全部楼层    本楼为最佳答案   
  1. 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')]
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-24 16:20:12 | 显示全部楼层
不懂,学习学习
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-24 17:05:12 | 显示全部楼层

追问下,为啥不能用字典定义呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-25 09:30:59 | 显示全部楼层
天天上头条 发表于 2017-11-24 17:05
追问下,为啥不能用字典定义呢

文档 https://docs.python.org/3/library/urllib.request.html#examples, 有个例子是这样:
  1. OpenerDirector automatically adds a User-Agent header to every Request. To change this:

  2. import urllib.request
  3. opener = urllib.request.build_opener()
  4. opener.addheaders = [('User-agent', 'Mozilla/5.0')]
  5. opener.open('http://www.example.com/')
复制代码


Python36\Lib\urllib\request.py 434行定义OpenerDirector
  1. class OpenerDirector:
  2.     def __init__(self):
  3.         client_version = "Python-urllib/%s" % __version__
  4.         self.addheaders = [('User-agent', client_version)]
  5.         ...
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-25 09:46:34 | 显示全部楼层
归根结底,urllib 操作的是OpenerDirector。--- 旧接口除外。  
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-19 06:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表