2011-11-27 60 views
0

我的系統不在任何代理之後。Python中的Urllib意外的行爲

params = urllib.urlencode({'search':"August Rush"}) 
f = urllib.urlopen("http://www.thepiratebay.org/search/query", params) 

這進入了一個無限循環(或只是掛起)。我顯然可以擺脫這一點,並使用FancyUrlOpener並自己創建查詢,而不是傳遞參數。但是,我認爲按照我現在所做的方式是一種更好和更乾淨的方法。

編輯:這是更多的一個網絡問題,其中我的Ubuntu工作站配置爲不同的代理。必須做一些改變,它的工作。謝謝!

回答

1

發佈的代碼適用於我,在Windows上使用Python 2.7.2。

您是否嘗試過使用http調試工具(如Fiddler2)來查看您的程序和網站之間的實際對話?

如果在本地主機端口8888上運行Fiddler2,你可以做到這一點,看的請求和響應:我與谷歌的Chrome中打開http://www.thepiratebay.org

import urllib 

params = urllib.urlencode({'q': "August Rush", 'page': '0', 'orderby': '99'}) 
f = urllib.urlopen("http://www.thepiratebay.org/s/", params) 

with open('text.html', 'w') as ff: 
    ff.write('\n'.join(f.readlines())) 

import urllib 
proxies = {"http": "http://localhost:8888"} 
params = urllib.urlencode({'search':"August Rush"}) 
f = urllib.urlopen("http://www.thepiratebay.org/search/query", params, proxies) 
print len(f.read()) 
+0

謝謝你向我介紹Fiddler。 – Hick

1

這對我的作品與網絡檢查器啓用。我將「August Rush」放入搜索欄並按下「搜索」。然後我分析了發送的頭文件並執行了上面的代碼。

+0

連接仍超時。 – Hick

+0

如果兩個人工作,我想你有網絡問題... – warvariuc