2010-11-05 57 views
0

好像这些代码会工作:Python的机械化模块代理设置问题

MechBrowser = mechanize.Browser() 
MechBrowser.set_proxies({"http": "111.11.11.11"}) 
response = MechBrowser.open("http://google.com") 

但是当你看到“111.11.11.11”只是我想出了一个随机的IP来测试,如果代理设置工作,它不是一个有效的代理。奇怪的是,MechBrowser仍然打开google.com而没有给出任何错误,那么这是否意味着如果你设置的代理不工作机械化将使用默认设置来浏览?如果我希望它在代理断开时抛出异常,我该怎么办?

非常感谢

回答

0

语法是好的,它在我的机器上工作,因为它应该做的。

------> print(mechanize.__version__) 
(0, 2, 1, None, None) 

>python -V 
Python 2.6.5 

当代理不可用,例如,它会提高URLError。我可以推荐你检查你目前正在使用的mechanize + python的版本,并在python解释器中交互地运行这个代码。

+0

我的机械化版本是:(0,2,2,无,无),但我不知道数字的意思。我的Python版本是2.7。显然,“111.11.11.11”不是一个有效的代理,并且当通过此代理打开google.com时,解释器仍然引发NO URLError,所以我真的不知道哪里出了问题...... – Shane 2010-11-06 02:16:39

+0

我发现问题是什么,如http://wwwsearch.sourceforge.net/mechanize/所示,端口号不是可选的!在我的解释器中,只有当你使用像“111.11.11.11:8000”这样的代理时,它会引发URLError,或者机械化浏览器会使用默认设置打开页面! – Shane 2010-11-06 02:33:23

+0

#注意userinfo(“joe:password @”)和端口号(“:3128”)是可选的。 - 来自http://wwwsearch.sourceforge.net/mechanize/。所以,代理是有效的,它适用于我。在你的shell中键入'ping 111.11.11.11'(win或者linux,没关系)并且观察输出 - 确定。刚试过0.2.2版 - 一切都很好。所以,更新您的机械化到0.2.4,尝试通过python 2.6运行此脚本并尝试在另一台计算机上运行它。 – thereisnospoon 2010-11-06 18:24:11