58. WikiTreffen

Zeit: Mittwoch, 02.06.04 ab 18:00 h<<BR>>
Ort: im [[http://herberger.jura.uni-sb.de|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 ==

 * Homepage: http://www.python.org/
  *  http://www.python.org/doc/
  * http://www.python.org/doc/NonEnglish.html#german

 * Wikipedia: DeWikiPedia:Python_%28Programmiersprache%29

 * [[http://www.python.org/cgi-bin/moinmoin|PythonWiki]] (englisch) und [[http://pythonwiki.de/|PythonWiki]] (deutsch)
  * http://pythonwiki.de/PythonLernen

 * http://diveintopython.org/
 * http://pythonwiki.de/PythonCookBook



== 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]]


----

 * vorheriges [[WikiTreffen/2004-05-26]]
 * nächstes [[WikiTreffen/2004-06-09]]