-2

如何以一种不错的方式从此 html 代码中提取文本“ROYAL PYTHON”?我一直在寻找解决方案 4 小时,但我没有发现任何真正相关且有效的东西。

<div class="definicja"><a href="javascript: void(0);"
onclick="play('/mp3/1/81/c5ebfe33a08f776931d69857169f0442.mp3')"
class="ikona_sluchaj2"></a> <a href="/slownik/angielsko_polski/,royal+python">ROYAL
PYTHON</a></div>
4

4 回答 4

2

正如 Joel Cornett 提到的,像这样使用BeautifulSoup

from bs4 import BeautifulSoup

html = '''<div class="definicja"><a href="javascript: void(0);" onclick="play('/mp3/1/81/c5ebfe33a08f776931d69857169f0442.mp3')" class="ikona_sluchaj2"></a> <a href="/slownik/angielsko_polski/,royal+python">ROYAL PYTHON</a></div>'''

soup = BeautifulSoup(html)
print soup.getText()
于 2012-04-20T21:17:14.813 回答
0

您可以使用 lxml 和 xpath:

from lxml.html.soupparser import fromstring

s = 'yourhtml'
h = fromstring(s)
print h.xpath('//div[@class="definicja"]/a[2]/text()')[0]
于 2012-04-20T21:12:06.703 回答
0

还有标准模块 xml.etree.ElementTree

import xml.etree.ElementTree as ET

fragment = '''<pre>
<div class="definicja"><a href="javascript: void(0);"
  onclick="play('/mp3/1/81/c5ebfe33a08f776931d69857169f0442.mp3')"
  class="ikona_sluchaj2"><img src="/images/ikona_sluchaj2.gif" alt=""
  /></a> <a href="/slownik/angielsko_polski/,royal+python">ROYAL
  PYTHON</a></div>
</pre>'''

frg = ET.fromstring(fragment)
for a in frg.findall('div/a'):
    if a.text is not None:
        print a.text
        print '------'
        print ' '.join(a.text.split())  # all words to one line

它打印在我的控制台上

ROYAL
  PYTHON
------
ROYAL PYTHON
于 2012-04-20T21:21:48.650 回答
0

假设这里有几件事:(1) HTML 片段将始终是有效的 XHTML,并且 (2) 您正在寻找片段中第二个锚标记内的文本

from xml.dom.minidom import parseString

htmlString = """<pre><div class="definicja"><a href="javascript: void(0);" onclick="play('/mp3/1/81/c5ebfe33a08f776931d69857169f0442.mp3')" class="ikona_sluchaj2"><img src="/images/ikona_sluchaj2.gif" alt=""/></a> <a href="/slownik/angielsko_polski/,royal+python">ROYAL PYTHON</a></div></pre>"""

xmlDoc = parseString(htmlString)
anchorNodes = xmlDoc.getElementsByTagName("a")
secondAnchorNode = anchorNodes[1]
textNode = secondAnchorNode.childNodes[0]

print textNode.nodeValue

xml 包含在 Python 中,因此您不必担心安装任何包。

于 2012-04-20T21:14:34.393 回答