を使用して、テキストを含むすべてのタグを取得する必要がありますlxml.html
。私はを使用しています{e.tag for e in doc.xpath('.//*[text()= true()]')}
が、ワイルドカードとtext()
クエリの両方lxml
が遅いことで有名です。それを行うためのより迅速な方法はありますか?
質問する
113 次
2 に答える
1
要素にテキストが含まれる一連のタグ名を取得するには:
tags = {e.tag for e in doc.iter() if e.text}
于 2013-02-04T13:47:33.547 に答える
1
これを試すことができます:
>>> import itertools
>>> [e.tag for e in itertools.ifilter(lambda x: x.text,doc.findall('.//'))]
高速かどうかはわかりませんが、言及した両方のこと (XPath ワイルドカードとtext()
関数) を回避します。
リストのみ (イテレータではなく) を操作する場合、この構文はさらに単純です。
>>> filter(lambda x: x.text,doc.findall('.//'))
各タグを見つけたときに処理する場合は、反復子を使用する必要があります (おそらくより高速です)。
于 2013-02-04T13:18:37.070 に答える