レッツは、私がこのようなコードを持って言う:Xpath(lxml)を使って複数のタグからテキストを抽出する方法は?
<table>
<tr>
<td colspan=2>Date</td>
</tr>
<tr id='something'>
<td>8 september</td>
<td>2008</td>
</tr>
</table>
私は、「2008年9月8日を」持っている日付を抽出したいです。
レッツは、私がこのようなコードを持って言う:Xpath(lxml)を使って複数のタグからテキストを抽出する方法は?
<table>
<tr>
<td colspan=2>Date</td>
</tr>
<tr id='something'>
<td>8 september</td>
<td>2008</td>
</tr>
</table>
私は、「2008年9月8日を」持っている日付を抽出したいです。
純粋なXPath 1.0ソリューションです。
用途:
string(normalize-space(//table/tr[@id = 'something']))
@acheruns:このノードが30回ある場合、XPath 1.0だけでは、必要な文字列をすべて取得することはできません。別のインデックスを使用するたびに、ループ内で(1からcount(expression)まで)XPath式を30回評価する必要があります。 '$ k'は1から' count( '')に代入されなければなりません。 // table/tr [@id = 'something']) ' –
あなたは各td
要素からテキストを収集し、' '.join(...)
とそれらを結合することができます:
import lxml.html as LH
content = '''
<table>
<tr>
<td colspan=2>Date</td>
</tr>
<tr id='something'>
<td>8 september</td>
<td>2008</td>
</tr>
</table>
'''
doc = LH.fromstring(content)
date = ' '.join(td.text for td in doc.xpath('//table/tr[@id = "something"]/td'))
print(date)
利回り
8 september 2008
それとも、あなたはキャリッジリターンを扱うことができるならば、あなたはtext_content()
を使用することができます方法:
for td in doc.xpath('//table/tr[@id = "something"]'):
print(td.text_content())
s
8 september
2008
http://stackoverflow.com/a/1405439/181772 [予選子ノードの値の文字列連結を返すためのXPath]の –
可能重複します(http:// stackoverflowの.com/questions/1403971/xpath-return-string-concatenation-of-child-node-values) –