我在使用urllib2.urlopen()时只是为了读取头文件,还是实际带回整个网页?
IE是否真的在urlopen调用或read()调用上获取HTML页面?
handle = urllib2.urlopen(url)
html = handle.read()
Run Code Online (Sandbox Code Playgroud)
我问的原因是这个工作流程......
谢谢!
我刚用wireshark进行测试.当我调用urllib2.urlopen('url-for-a-700mbyte-file')时,只会立即检索标题和一些正文包.直到我打电话给read(),大部分身体都来到了网络.这与我通过阅读httplib模块的源代码看到的相符.
因此,为了回答原始问题,urlopen()不会通过网络获取整个主体.它取出标题,通常是一些正文.当你调用read()时,将获取正文的其余部分.
部分正文提取是预期的,因为:
除非您一次读取一个字节的http响应,否则无法准确知道传入标头的长度,因此无法知道在正文开始之前要读取多少字节.
http客户端无法控制服务器捆绑到响应的每个tcp帧中的字节数.
实际上,由于一些主体通常与标题一起被提取,您可能会发现在urlopen()调用中完全获取了小主体(例如小的html页面).
| 归档时间: |
|
| 查看次数: |
4367 次 |
| 最近记录: |