Problem mit Regex (re)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
deets

maxwell hat geschrieben: Irgendwie habe ich auch geahnt - bevor ich den Thread überhaupt verfasste - dass gleich alle wieder aus den Ecken strömen und meinen "Hey das geht anders viel besser ...". :mrgreen:
Ja, das ist schon ganz schoen schlimm - da fragt man um Hilfe in einem kostenlosen, oeffentlichen Forum. Und dann haben die Leute, die da fuer Umme ihre Hilfe anbieten, auch noch *eigene* Ideen und Vorstellungen, anstatt einfach nur stumpf das zu tun, was man ihnen aufgetragen hat...

Kannst dir gar nicht vorstellen, wie sehr ich mit dir fuehle...
maxwell hat geschrieben:
Ja mai - dann gebt doch bitte mal ein Beisoiel ... :roll:

Übrigens habe ich zwischenzeitlich dann doch mit Beautiful Soup experimentiert. Irgendwie aber auch nicht so erfrischend wie es mir suggeriert wurde.

mhhhh ...
Ja mai, dann gib doch mal nen Beispiel von deinem HTML, und was du so zusammengebastelt hast mit BS.
maxwell
User
Beiträge: 69
Registriert: Samstag 11. Juli 2009, 15:36
Wohnort: am Fernsehturm in B.

Hi Hyperion, deets,

erstmal danke für das Feedback.

Hier der beispielhafte HTML-Code der Tabelle:

Code: Alles auswählen

<table class="cardTable">
	<colgroup>
		<col width="17" />
		<col width="50" />
        <col width="50" />
	</colgroup>
	<tr>
		<th rowspan="2">&nbsp;</th>
		<th rowspan="2" class="nowrap  first">
			<span title="ISIN"><a href="...">ISIN</a></span>
			<br>
			<span title="WKN"><a href="...">WKN</a></span>
		</th>                      
		<th rowspan="2" class="nowrap ">
			<span title="Geld">Geld</span>
			<br>
			<span title="Brief">Brief</span>
		</th>
		<th rowspan="2" class="nowrap ">
			<span title="Datum | Zeit">Datum Zeit</span>
			<br>
            <span title="...">Börsenplatz</a></span>
        </th>
	</tr>
	<tr>
		<td class="first">
			<span title="DE000GS86N87" class="nowrap">
				<a href="...">DE000GS86N87</a>
            </span>
			<br>
            <span title="GS86N8" class="nowrap">GS86N8</span>
		</td>
		<td >
			<span class="nowrap">1,56</span>
			<br>
            <span title="1 : 1" class="nowrap">1 : 1</span>
		</td>
		<td >
            <span class="nowrap">20.02.12&nbsp;&nbsp;&nbsp;13:09</span>
            <br>
			<span title="Frankfurt (Scoach)" class="nowrap">Frankfurt (Sc..</span>
		</td>
	</tr>
	......
</table>
@deets:
Du verstehst das schon wieder falsch. Ich habe nichts gegen Anregungen. Never, niemals ... :D
be or not to be
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

Beschwer dich aber nicht hinterher bei uns wenn deine regulären Ausdrücke nach minimalen Änderungen des HTML-Quellcodes nicht mehr funktionieren :P
deets

Finde ich deutlich simpler & klarer als dein rex-gefummel. Und hat keine 5 Wochen gedauert.

Code: Alles auswählen

from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(html)

wkn = soup.find(title='WKN').find("a").text
isin = soup.find(title='ISIN').find("a").text

print wkn, isin
Deinen Tabellenfall konnte ich nicht reproduzieren - das was du schreibst ("Aktuell:" usw) kommt in deinem HTML nicht vor.
maxwell
User
Beiträge: 69
Registriert: Samstag 11. Juli 2009, 15:36
Wohnort: am Fernsehturm in B.

Hallo deets,
danke für Dein Feedback. Ich habe mich noch mal mit BSoup beschäftigt.

Code: Alles auswählen

from BeautifulSoup import BeautifulSoup
bs = BeautifulSoup(raw)

t = bs.find('table', {'class':'cardTable'})

hdr = t.findNext('tr')
for h in hdr.findAll('span'):
	print h['title']

rows = hdr.findAllNext('tr')

for r in rows:
	for s in r.findAllNext('span'):
		print s.text
Problem ist nur, dass in der letzten Spalte der letzte Zeile der Tabelle der Spalteninhalt im Attribut ('title') steht.
Es gibt "span"s die jedoch nicht über dieses Attribut verfügen.
Naja man könnte dann über nen exeception Block abfangen und im Zweifel den text nehmen ...

Gr. Chris
be or not to be
Antworten