Das Projekt “JuraWiki” wurde archiviert. Es ist weiterhin online, jedoch nicht mehr aktiv. Man kann also keine Seiten mehr bearbeiten und sich nicht mehr einloggen (außer man ist Mitglied der TrustedEditorGroup) oder sich neu registrieren. Alle Informationen, die Sie hier finden, sind also potenziell veraltet.

58. WikiTreffen

Zeit: Mittwoch, 02.06.04 ab 18:00 h
Ort: im Lehrstuhl Bürgerliches Recht, Rechtstheorie und Rechtinformatik (Uni Saarbrücken).

Sonderveranstaltung "Wiki von innen" Teil 2 und Einführung in Python: Makro-Programmierung

im Rahmen der Veranstaltung "EDV-Instrumente für die juristische Arbeit" (Prof. Herberger), siehe auch Teil 1: WikiTreffen/2004-05-19

Python

Makro

/usr/local/moin/MoinMoin/macro

Unsere Programmier-Versuche

>>> import urllib
>>> print urllib.urlopen("http://www.jurawiki.de").read()

>>> datei = open("jurawiki.html", "wa")
>>> datei.write(seite)

>>> url = "http://de.wikipedia.org/wiki/Prinz_Eugen_%28Schiff%29"
>>> seite = urllib.urlopen(url).read()
>>> import re
>>> regexp = re.compile(r"(?P<titel><h1.*</h1>)")
>>> result = regexp.search(seite)
>>> test =  result.group('titel')

Traceback (most recent call last):
  File "<pyshell#29>", line 1, in -toplevel-
    test =  result.group('titel')
AttributeError: 'NoneType' object has no attribute 'group'

Nachtrag

So sollte das funktionieren:

>>> ipmport urrlib, re
>>> url = "http://de.wikipedia.org/wiki/Prinz_Eugen_%28Schiff%29"

Zunächst einen "unverdächtigen" User-Agent setzen (auf "Python-urllib/1.15" z.B. reagiert Wikipedia mit einer Fehlerseite).

>>> urllib.URLopener.version ="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
>>> seite = urllib.urlopen(url).read()

>>> regexp = re.compile(r"<h1.*>(?P<titel>.*)</h1>")
>>> result = regexp.search(seite)
>>> print result.group("titel")
Prinz Eugen (Schiff)

Und jetzt den ersten Absatz:

>>> regexp = re.compile(r"<p>(?P<text>.*)</p>", re.DOTALL)

Das Flag DOTALL soll bewirken, dass auch Zeilenumbrüche aktzeptiert werden.

>>> result = regexp.search(seite)
>>> print result.group("text")

Offenbar wird so alles zwischen dem ersten <p> und dem letzten </p> geliefert, d.h. man bekommt den ganzen Artikel. Auch nicht schlecht ;)

OffeneFrage: Wie bekommt man nur den ersten Absatz?


siehe auch KooperationMitWikipedia/WikipediaMakro


Teil 1: WikiTreffen/2004-05-19


WikiTreffen/2004-06-02 (zuletzt geändert am 2008-01-20 19:59:06 durch anonym)