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