1
我有以下HTML標記,我希望從此代碼片段中以純文本的形式獲取英文說明 - 沒有「英文,也沒有任何標記」:在lxml/Python中的選定元素旁邊獲取文本
from lxml import etree
html = '''
<td class="description">
<p><b>English:</b> Ulm, Germany, old town with Münster, city wall and Metzgerturm, as seen from the south bank of the river Danube.</p>
<p><b>Deutsch:</b> Ulm, Ansicht der Altstadt vom rechten Donauufer aus. Abgebildet ist das Donauschwabenufer, von der Altstadt sind erkennbar: Das dominante Münster mit Hauptturm, Schiff und zwei Chortürmen; unterhalb des Hauptturms des Münsters zwei Giebel, die zur historischen Krone gehören (linker Giebel größtenteils von Bäumen verdeckt); die Spitze der neuen, gläsernen Stadtbibliothek von Gottfried Böhm; weiter rechts zwei Giebel des Rathauses (gelb-braun); am rechten Rand der Metzgerturm als Teil der Stadtbefestigung.</p>
</td>
'''
tree = etree.fromstring(html)
for el in tree.xpath('//td[contains(concat(" ", normalize-space(@class), " "), " description ")]/div|p'):
print etree.tostring(el)
通過這個腳本,我得到了包括所有標籤在內的單個段落,但是我卡在那裏......這些段落也可能是DIV;因此我在xpath中使用了div | p。
的LXML解決方案還應與DIV容器的工作是這樣的:
<td class="description">
<div class="description mw-content-ltr et" dir="ltr" lang="et" style=""><span class="language et" title=""><b>Eesti:</b></span> Olen loonud selle pildi, kui ma nägin arutelu uue Wiki logo.</div>
<div class="description mw-content-ltr en" dir="ltr" lang="en" style=""><span class="language en" title=""><b>English:</b></span> "Prototype" for new Wiktionary Logo</div>
</td>
@SimonSteinberger,你可以用包含'div'的html來更新問題嗎? – falsetru 2014-10-03 13:35:12
完成 - 我只想提取英文說明。 – 2014-10-03 13:38:07
好的,但我仍然得到非英文的描述。我試圖只提取這兩個句子:「烏爾姆,德國......」和「原型......」 – 2014-10-03 13:43:16