0

我正在用 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)

我的问题是:“读取”调用会阻塞直到整个 HTML 页面被下载,还是每次都会返回到目前为止已加载的页面块?

这对我很重要,因为我需要尽快开始处理网页,而不是等到它结束。

我听说pycurl库可以选择流式传输,但我确定需要切换到 pycurl,或者我可以使用urllib2实现相同的功能吗?

非常感谢...

4

1 回答 1

0

urllib2urlopen()的默认处理程序实际上似乎在调用时获取整个页面。read()不会阻止,因为整个页面已经可用。您可能可以编写自己的处理程序来流式传输数据(开启程序返回一个类似文件的对象,该对象通过read()响应公开,并且可以流式传输)但是如果另一个库已经具有该功能,我会使用相反。

于 2012-11-29T17:34:41.070 回答