我试图使用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''。 –