-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

標準モジュール 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

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

(1) HTML スニペットは常に有効な XHTML であり、(2) スニペットの 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 に答える