可以使用python中的urllib2实现HTMLParser流

时间:2012-11-29 17:21:34

标签: python streaming html-parsing urllib2 pycurl

我在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 来实现相同的功能吗? / p>

非常感谢......

1 个答案:

答案 0 :(得分:0)

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