2

lxmlのlxml.etree.iterparseから複数のタグ名を取得する方法はありますか?高価な読み取り操作と多くのタグを持つファイルのようなオブジェクトがあるため、すべてのタグを取得するか、2つのパスを実行することは最適ではありません。

find(['tag-1', 'tag-2])編集: iterparseの引数を除いて、BeautifulSoupのようなものになります。<td><div>タグの両方のHTMLページを解析することを想像してみてください。

4

2 に答える 2

4

ここで「すべてのタグを取得する」とはどういう意味かは100%わかりませんが、おそらくこれがあなたが探しているものです。

for event, elem in iterparse(file_like_object):
    if elem.tag == 'td' or elem.tag == 'div':
        # reached the end of an interesting tag
        print 'found:', elem.tag
        # possibly quit early to prevent further parsing
        if exit_condition: break

iterparse解析中にその場でイベントを生成するため、必要な量のデータのみを読み取っています。ただし、スキップする距離がわからないため、解析中に要素の読み取りをスキップする方法はありません。上記では、関心のないタグは無視します。

すでにご存知かもしれませんが、htmlにはxmlパーサーを使用しないでください。編集-lxmlはhtml解析をサポートしていることがわかりましたが、ドキュメントをチェックして、どの程度かを確認する必要があります。

于 2011-01-15T04:20:28.187 に答える