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