1

HTMLドキュメントを解析するときに奇妙な問題が発生しました。HTML ドキュメントには、次のようなスパンがあります。

<span class="time">Thu May 17, 2012 12:20 pm</span>

私がそれを解析すると(それはtdの中にあります):

row.xpath('string(./td/span/text())')

私は以下を取得します:

Wed May 16, 2012 11:20 pm

問題は何ですか?

4

1 に答える 1

1

おそらく、./td/span複数の要素に一致します。string()XPath を取得すると、最初の結果のみが処理されます。

>>> html = """<html>
...             <td><span class="time">Wed May 16, 2012 11:20 pm</span></td>
...             <td><span class="time">Thu May 17, 2012 12:20 pm</span></td>
...           </html>"""
>>> t = etree.fromstring(html)
>>> t.xpath('string(./td/span)')
'Wed May 16, 2012 11:20 pm'

より具体的な XPath を記述して、必要な行に到達するか、行をループする必要があります。

>>> for row in t.xpath("./td/span"):
...     print(row.xpath("string(.)"))
...     
Wed May 16, 2012 11:20 pm
Thu May 17, 2012 12:20 pm

(注:text()この場合は必要ないため、 を削除しました。text() あなたが思っていることをしないかもしれません。)

于 2012-05-17T09:20:20.797 に答える