我試圖使用urllib2.urlopen
(實際上,我正在使用mechanize
,但這是mechanize
調用的方法)獲取頁面當我獲取頁面時,我收到的不完整響應;該頁面被截斷。但是,如果我訪問該頁面的非HTTPS版本,則會顯示完整頁面。Urllib2 HTTPS截斷響應
我在Arch Linux上(3.5.4-1-ARCH x86_64
)。我正在運行openssl 1.0.1c
。這個問題發生在我自己的另一臺Arch Linux機器上,但是在使用Python 3時(3.3.0
)沒有。
此問題似乎與urllib2 not retrieving entire HTTP response有關。
我在唯一能讓我使用urllib2(Py I/O)的在線Python解釋器上測試它,它按預期工作。這裏是代碼:
import urllib2
u = urllib2.urlopen('https://wa151.avayalive.com/WAAdminPanel/login.aspx?ReturnUrl=%2fWAAdminPanel%2fprivate%2fHome.aspx')
print u.read()[-100:]
最後一行應該包含通常的</body></html>
。
當我嘗試在我的機器urllib.urlretrieve
,我得到:
ContentTooShortError: retrieval incomplete: got only 11365 out of 13805 bytes
我不能在網上解釋測試urlretrieve
,因爲它不會讓用戶寫入臨時文件。晚上晚些時候,我會嘗試從我的機器上獲取URL,但是從其他位置獲取。
我目前處於不同位置,urllib2.urlopen或urllib2.urlretrieve也不在這裏工作。 我安裝了'requests'模塊,它工作完美。 我會逐行比較'urlopen'和'requests'來定位失敗點。我仍然不知道應該責怪誰:包裝商,還是上游(Python開發者)。 – sleblanc
感謝您的幫助,Balthazar! – sleblanc
注意:在內部,「requests」是基於''urllib3''。 –