【问题标题】:Can HTMLParser streaming be implemented using urllib2 in python可以在python中使用urllib2实现HTMLParser流吗
【发布时间】:2012-11-29 17:21:33
【问题描述】:

我正在用 python 编写 HTMLParser 实现,它将处理从 Internet 下载的网页。

这是我的代码:

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 实现相同的功能吗?

非常感谢...

【问题讨论】:

    标签: python streaming html-parsing urllib2 pycurl


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-05-26
      相关资源
      最近更新 更多