4

lxml を使用して、次のようにフォーマットされたコメントの配列を取得しようとしています

<div id="comment-1">
  TEXT
</div>

<div id="comment-2">
  TEXT
</div>

<div id="comment-3">
  TEXT
</div>
...

使ってみた

html.findall(".//div[@id='comment-*']")

しかし、これは文字通りのアスタリスクを検索します。

私がやろうとしていることの正しい構文は何ですか?

編集:私は最終的にそれを動作させました

doc = lxml.html.parse(url).getroot()
comment_array = doc.xpath('.//div[starts-with(@id, "comment-")]')
4

3 に答える 3

0

path部分は、を式として使用することhtml.findallのみを許可し、XPath subsetデフォルトでは正規表現を使用しません。

これを行うには、EXSLT説明されているように拡張機能を使用する必要があります。hereまたは、を使用できますxpath core functions

于 2012-06-02T18:45:13.110 に答える
0

私も同じような欲求を持っていて、誇りに思っているわけではありませんが、仕事をやり遂げることができました.

def node_checker(node):
    if node.attrib['id'].find('hurf-durf') > -1:
        return True
    else:
        return False


for node in itertools.ifilter(node_checker, r.iterdescendants(tag='sometag')):
    print node.tag

私の最高の仕事ではありませんが、別の問題に進むことができる柔軟性を備えた getElementById に十分近づくことができました。

于 2012-11-19T15:18:01.773 に答える