我正在用python编写HTMLParser实现,它将处理从互联网下载的网页。在
这是我的代码:
class Parser(HTMLParser.HTMLParser):
...
parser=Parser()
httpRequest = urllib2.Request("http://www......")
pageContent = urllib2.urlopen(httpRequest)
while (True):
htmlTextPortion = pageContent.read()
parser.feed(htmlTextPortion)
我的问题是:“read”调用会在整个HTML页面被下载之前阻塞,还是每次都返回已经加载的页面块?在
这对我很重要,因为我需要尽快开始处理网页,而不是等到它结束。在
我听说pycurl库有一个流式处理的选项,但它确实需要切换到pycurl,还是可以用urllib2实现相同的功能?在
非常感谢。。。在
urllib2
的默认处理程序实际上似乎是在urlopen()
调用中获取整个页面。read()
不阻止,因为整个页面已经可用。您可能可以编写自己的处理程序来流式处理数据(opener返回一个类似文件的对象,它通过响应上的read()
公开,这可以是流式的),但是如果另一个库已经有了该功能,我会改为使用它。在相关问题 更多 >
编程相关推荐