Auslesen von Wiki-Tabellen (mit Perl)

Hi !

weiß einer von Euch ob es ein Tool gibt um die Werte von Tabellen aus OsmWiki-Seiten auslesen zu können?

Ziel ist es die online-Geführte Tabelle der Lübeck-Spielplätze auslesen zu können um diese dann in eine Auswertung übernehmen zu können. Am liebsten wäre es mir, wenn diese perl-basiert wäre.

Gruß Jan :slight_smile:

http://wiki.openstreetmap.org/wiki/L%C3%BCbeck/Spielpl%C3%A4tze

Also für Python hatte ich mal sowas gebastelt, da es da eine Lib für Mediawiki-API gibt. Vielleicht bist du aber mit manuellen Aufarbeiten der Liste auf deinem Rechner auch schneller…


<table class="wikitable sortable">
<tr style="margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse; font-size: 95%;">
<th> Ref
</th>
<th> Name
</th>
<th> Bemerkungen
</th></tr>
<tr>
<td>147226
</td>
<td>Adolfplatz / Stadtpark
</td>
<td>
</td></tr>
<tr>
<td>127232
</td>
<td>Alsheide
</td>
<td>
</td></tr>
<tr>
<td>127233
</td>
<td>Alsheide / Engelswisch (Alsheide2)
</td>
<td>
</td></tr></table>

Das Auswerten des html Codes sollte mit den CPAN Routinen für perl kein allzu großes Problem sein.

Da die Tabellen allerdings keinen Namen oder Kennzeichnung haben, muss man auf andere Weise feststellen, welche man braucht.

Mit “wiki.openstreetmap.org/w/index.php?title=&action=raw” kann man den Quelltext einer Seite herunterladen (&section= für den Ausschnitt zu einer Überschrift). Und mit grep und sed kann man auch schon einiges extrahieren und umformatieren.

Zum Beispiel:


wget -O raw.txt 'wiki.openstreetmap.org/w/index.php?title=Lübeck/Spielplätze&action=raw'
grep '^|[^-\n}]' raw.txt > test.txt

liefert schon mal so was:


|147226
|Adolfplatz / Stadtpark
|127232
|Alsheide
...

Gruß,
Norbert

Hi !

danke erst einmal für den Hinweis.

Jetzt muss ich saß nur noch mit perl unter Windows verwerten.

Jan

hi !

ich habe jetzt einmal versucht den Weg von ikonor unter Windows 7 auszuführen und habe auch einmal beide Hochkomma-Varianten ausgeführt und es kommen einfach nur Fehlermeldungen. Meine Bat-Datei liegt als UTF-8 ohne BOM vor.

wget -O raw.txt 'wiki.openstreetmap.org/w/index.php?title=Lübeck/Spielplätze&action=raw'

Rückmeldung

wget -O raw.txt "wiki.openstreetmap.org/w/index.php?title=Lübeck/Spielplätze&action=raw"

Rückmeldung

Kann mir einer weiterhelfen ?

Gruß Jan :slight_smile:

Rückmeldung ( wget mit cut&paste aus deinem Post)

null Problemo :slight_smile:

Schlußfolgerung: irgend was mit MS.

Gruss
walter

unter XP gestestet:
als einzelner Befehl in der Konsole: OK
als BAT gespeichtert: die gleichen Probleme wie bei Jan

Christian

Vielleicht ein Umlaut-Problem (ü + ä)?

Evtl. hilft die URL-Kodierung aus Deinem ersten Post, also:


wget -O raw.txt "wiki.openstreetmap.org/w/index.php?title=L%C3%BCbeck/Spielpl%C3%A4tze&action=raw"

P.S.: Ich hatte das in der Cygwin bash unter Windows XP getestet.

Hi !

habe das eben nochmal ausprobiert:

… schade !

Gruß Jan :slight_smile:

keep it simple: nimm erst mal nen wiki-url OHNE Umlaute.
Gruss
walter

Da fehlt jetzt das %C3%, vermutlich weil das wegen der % in der Batch-Datei als Variable ersetzt wird, versuch mal:


wget -O raw.txt "wiki.openstreetmap.org/w/index.php?title=L%%C3%%BCbeck/Spielpl%%C3%%A4tze&action=raw"

@ikonor: bingo !!!

Jetzt muss ich nur noch, am besten mit Perl, eine Konvertierung in eine CSV-Datei der ersten Tabelle realisieren.

Gruß Jan :slight_smile:

Ich hab mir erlaubt, Überschriften in die Wiki-Seite einzufügen (bitte prüfen, ob das passt).

Damit kannst du mit “&section=1” nur die erste Tabelle herunterladen:


wget -O raw.txt "wiki.openstreetmap.org/w/index.php?title=L%C3%BCbeck/Spielpl%C3%A4tze&action=raw&section=1"

danke für den Tipp mit der Überschrift.

Es ist aber wieder einmal ein Übertragsfehler entstanden:


wget -O raw.txt "wiki.openstreetmap.org/w/index.php?title=L%%C3%%BCbeck/Spielpl%%C3%%A4tze&action=raw&section=1"

Gruß Jan :slight_smile:

Bei mir das gleiche Problem:
wget -O raw.htm “http://wiki.openstreetmap.org/wiki/L%C3%BCbeck/Spielpl%C3%A4tze” oder
wget -O raw.txt “wiki.openstreetmap.org/w/index.php?title=Lübeck/Spielplätze&action=raw

direkt aus cmd shell tut, aus bat File tut nicht.

Lösung:

System call aus perl Skript:

#!/usr/bin/perl -w
use strict;
system(‘wget -O raw.htm “http://wiki.openstreetmap.org/wiki/L%C3%BCbeck/Spielpl%C3%A4tze”’);
system(‘wget -O raw.txt “wiki.openstreetmap.org/w/index.php?title=Lübeck/Spielplätze&action=raw”’);

@Lübeck: mein Skript arbeitet mit der raw.htm Version.

moin !

meinst Du damit das die gesamte Seite gezogen wird und die Datei dabei immer raw.htm heißen muss ?

Gruß Jan :slight_smile:

system(‘wget -O raw.htm “http://wiki.openstreetmap.org/wiki/L� … l%C3%A4tze”’); und
system(‘wget -O raw.txt “wiki.openstreetmap.org/w/index.php?title=Lübeck/Spielplätze&action=raw”’);
erzeugen unterschiedliche Dateiformate:
ersteres ein normales html, zweiteres das vom Editieren bekannte wikipedia Format.

Mein perl Skript arbeitet mit dem html Format.

PS: wer das pl Skript möchte, bitte per PN melden.