• Hallo Besucher!

    Du bist neu im Forum? Dann registriere dich hier, um Diskussionen beizutreten oder eigene Themen zu erstellen. Für die Registrierung ist es erforderlich, dass du einen Spielaccount bei Die Stämme hast.

    Andernfalls kannst du dich hier direkt einloggen.

    Falls du dein Passwort vergessen hast, kannst du hier ein neues Passwort anfordern.

[Python] HTMLParser

DeletedUser39417

Gast
Hoi,
bin grad bisschen am Werken mit Homepages. Hab jetzt aber ein Problem, da ich aus einer Tabelle daten auslesen will. Dies hab ich mit dem HTMLParser versucht. Jdoch schaff ich das nciht geziehlt, dass cih sagen kann, die tabellen id ist a und aus dieser soll er alle daten auslesen. Kann mir jemand helfen?


gruß
 

DeletedUser

Gast
Ich kann dir deswegen nicht helfen, weil die Informationen zu spärlich sind.

Welche Python-Version?
Wie schaut das zu parsende HTML aus?
Was soll aus dem zu parsenden HTML ausgelesen werden?
 

DeletedUser39417

Gast
Version ist python 2.6. HTML kann beliebig sein. Es soll zuerst eine Tabelle suchen, dessen ID ich im Parameter übergeben will. Dannach soll mit aus dieser Tabelle alle Felder ausgegeben werden, also tags und den text.
 

DeletedUser

Gast
Nun - da deine Informationen dennoch so spärlich sind, kann ich auch nur mutmaßen...

Code:
from lxml import etree
from StringIO import StringIO
html = """
<html>
	<head>
		<title>Test</title>
	</head>
	<body>
		<table id="myid">
			<tr>
				<td>Cell1</td>
				<td>Cell2</td>
			</tr>
		</table>
	</body>
</html>
"""
parser = etree.HTMLParser()
tree = etree.parse(StringIO(html), parser)

for item in tree.xpath('//table[@id="myid"]/tr/td/text()'):
  print item

ach ja - obiger Code gibt dir nur den Text aus. Wenn Du unbedingt auch die tags brauchst, musst du eben die for-Schleife und das verwendete XPath ändern.

Nähere Info hier: http://codespeak.net/lxml/parsing.html

Da du aber keine genauen Angaben gemacht hast, kann ich entsprechend auch keinen genaueren Code geben, der folgende Aspekte berücksichtigt:

- ist das HTML valide?
- ist dem <table>-Tag direkt ein <tbody> untergeordnet?
- ist der Text innerhalb des <td>-Tags ebenfalls mit Tags versehen? (bspw. <b>, <i> usw)
 
Zuletzt bearbeitet von einem Moderator:

DeletedUser39417

Gast
also, ist valide, hat kein tbody und in dem td Tag können auch noch andere Tags sein.
 

DeletedUser

Gast
Also ich areite grad dran XML's auszulesen und das in eine HTML zu schreiben...
Da HTML eine Variante von XML ist, nehm ich an das ich dir weiterhelfen kann.

Modifizierter Teil meines Scripts:
PHP:
import xml.dom.minidom as dom

def _getValue(name, nr):
    if (xml.getElementsByTagName(name)):
        knoten=xml.getElementsByTagName(name)[nr]
        return knoten.firstChild.nodeValue
    else:
        return "nicht angegeben"

xml = dom.parse("your.html")
Daten={}
name="td"
for nr in xml.getElementsByTagName(name):
    Daten[nr]=_getValue(name, nr)

Alle Werte werden dann in das dictonary Daten geschrieben...

Ich hab überings die Version 3.1.1...
Da war ja einige Umstellungen
Ich hoffe, das ich helfen konnte
 
Zuletzt bearbeitet von einem Moderator:
Oben