0

インターネットからダウンロードした Web ページを処理する HTMLParser 実装を Python で作成しています。

これが私のコードです:

class Parser(HTMLParser.HTMLParser):

...

parser=Parser()

httpRequest = urllib2.Request("http://www......")
pageContent = urllib2.urlopen(httpRequest)

while (True):
          htmlTextPortion = pageContent.read()
          parser.feed(htmlTextPortion)

私の質問は、HTML ページ全体がダウンロードされるまで「読み取り」呼び出しがブロックされるのか、それとも、これまでに読み込まれたページのチャンクが毎回返されるのかということです。

Web ページの処理をできるだけ早く開始し、処理が完了するまで待たないようにする必要があるため、これは私にとって重要です。

pycurlライブラリにはストリーミングのオプションがあると聞きましたが、確かに pycurl に切り替える必要がありますか、それとも urllib2で同じ機能に到達できますか?

どうもありがとう...

4

1 に答える 1

0

urllib2urlopen()のデフォルト ハンドラーは、実際には呼び出し時にページ全体を取得しているようです。read()ページ全体が既に使用可能であるため、ブロックされません。データをストリーミングする独自のハンドラーを作成することもできます (オープナーはファイルのようなオブジェクトを返します。これはread()応答で公開され、これはストリーミングできます) が、別のライブラリにその機能が既に組み込まれている場合は、その代わりに。

于 2012-11-29T17:34:41.070 に答える