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
問題は何ですか?
おそらく、./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()
あなたが思っていることをしないかもしれません。)