2010-11-05 58 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