So, dann auf zum zweiten Teil. Wie gesagt,
ich werde jetzt Ihnen die Aufgabenstellungen geben und danach werden wir
uns dann in Gruppen wahrscheinlich zusammentun. Am besten so ein bisschen aufteilen,
dass vielleicht ein paar Leute, die schon ein bisschen Erfahrung haben,
zusammengehen mit Leuten, die sich noch nicht so auskennen.
Insbesondere, wenn wir jetzt sozusagen an jedem Rechner arbeiten,
dann wird es auch wesentlich aufwendiger,
weil da kann ja durchaus auch was dazwischen kommen.
Genau, so viel Organisatorisches. Ich sage gleich noch weiteres,
wo sie die Aufgaben finden und so
Erstmal möchte ich aber noch was sagen zu den Tools,
die wir benutzen können. Häufig ist es so,
dass man Software nicht von Grund auf entwickelt, sondern schon bestimmte Libraries oder Programmteile,
die bereits geschrieben wurden und schon stark getestet und verbessert wurden,
weiter nutzt und weiter nutzen kann,
um nicht jedes Mal wieder von vorne anfangen zu müssen.
Natürlich kannst du auch geboten sein, bestimmte Sachen neu zu schreiben,
aber das hängt dann immer so ein bisschen davon ab,
die Anforderungen, die man gestellt hat,
so nicht erfüllt werden, dann kann es durchaus hilfreich sein,
auch mal was Eigenes zu schreiben.
Aber prinzipiell sollte man immer gucken,
ob man nicht schon was nutzen kann, was da ist.
Das ist, glaube ich, generell wichtig beim Softwareentwickeln,
vielleicht auch darauf achten, den Code dann Open Source zu stellen,
damit andere dann daran weiterentwickeln können.
Also was für Software haben wir zur Verfügung? Das kommt
natürlich auch die Programmiersprache an. Wir beschäftigen uns ja heute
mit Python mit R. Und hier gibt es verschiedene Frameworks, die man nutzen kann.
Sehr bekannt um HTTP-Anfragen zu stellen, in Partness Requests.
Wenn es jetzt eher um das XML-Passing geht oder die Knotenaddressierung,
dann gibt es beispielsweise in Python, Puteful Sue,
Parcel oder LXML und Ervestin Air,
das ist kombiniert so ein bisschen beides.
Also beide Problembereiche, wobei auch hier noch ein weiteres Paket
notwendig ist
Und dann gibt es allgemeine Frameworks, die probieren wirklich alle Aufgaben,
die man beim Scrapping oder beim Calling hat, zu kombinieren.
Insbesondere, wenn man jetzt reine Caller schreiben würde,
dann würde man da nochmal ganz anders vorgehen.
Also wenn man jetzt beispielsweise das Ziel hat,
eine Suchmaschine zu entwickeln und dafür zu callen,
dann müsste man da sozusagen mit ganz anderem Maßstab drangehen.
Diese Programme unterscheiden sich sehr von sozusagen den Frameworks,
wo es eher darum geht,
spezifische Informationen aus einer Webseite zu bekommen und dabei
nur durch wenige Unterseiten gehen zu müssen
Und hier gibt es Squaypee oder auch in RRR-Caller.
Ich habe selber noch nicht damit gearbeitet.
Wäre aber interessant, wenn jemand schon da mit Erfahrungen hatte.
Und zur Browser-Automatisierung hatte ich schon gesagt, gibt es Zelennium,
was sehr populär ist.
Und da gibt es auch für viele Programmiersprachen eine Implementation.
Also es ist sozusagen Programmiersprachen übergreifend durch, ja,
im Prinzip geht es nur darum,
diese die API anzusprechen zur Browser-Automatisierung,
also die Rap-Triver API anzusprechen
Und da gibt es dann verschiedene Implementationen in den verschiedenen Sprachen.
Hier besonders hervorzuheben ist, glaube ich, die Implementation in Java,
weil man da sehr, sehr viele Möglichkeiten hat,
die sozusagen in den anderen Programmiersprachen noch nicht,
noch nicht in dem Umfang bestehen.
Aber das ist jetzt auch eher ein persönlicher Präferenz, genau.
Dann gibt es die, also Webdriver-APIs für alle Browser, also auch Browser-übergreifend.
Und für Chrome oder Cormium gibt es die DevTools-API.
Hier Gibt es dann Implementationen für JavaScript, Puppetier, die sehr bekannt ist.
Aber es gibt auch sozusagen in Air schon Projekte,
die probieren diese Puppetier-Library zu transkribieren,
die aber auch nur nicht so ausgereift sind.
Hier ist wirklich die JavaScript-Variante am ausgereiftesten. Und wenn man damit arbeitet,
würde ich fast empfehlen, auf JavaScript zu gehen.
Das können wir allerdings heute nicht. Ich hatte mich
jetzt fokussiert auf Air & Python.
Dann habe ich jetzt praktische Problemstellungen mitgebracht,
wobei wir jetzt wahrscheinlich nur die erste Problemstellung aufzeichnen, genau.
Und ich hatte mir gedacht, was könnte ein gutes Beispiel sein?
Es ist nicht so einfach, hier auch viele Interessen, unterschiedliche Interessen irgendwie zusammenzuführen.
Deswegen hatte ich gedacht, das geht wahrscheinlich nicht. Deswegen was gesucht,
was vielleicht einfach interessant ist, weil Hier,
die gibt es ja, also es gibt die Regierungspressekonferenz am Format,
wo Journalisten der Bundesregierung Fragen stellen und die Bundesregierung einladen,
um an sie Fragen stellen zu können.
Und die Bundesregierung antwortet auf diese Fragen. Und da gibt es Mitschriften,
also die auch veröffentlicht sind auf der Seite der Bundesregierung,
insbesondere auch die rechtlichen Fragen sind hier meines Erachtens sehr unbedenklich,
wenn wir sozusagen die nicht zu viele Anfragen auf einmal stellen und hier ein paar genau so ein bisschen vorsichtig sind.
Aber prinzipiell spricht da wenig dagegen. Und die Herausforderung,
die hier bestehen, Teile der Seiten,
die wir uns anschauen, funktionieren erst,
nachdem man JavaScript ausgeführt hat, die Hidden API der Webseite,
wenn wir da sozusagen reingucken, verwendet CSRF-Cookies,
dass sozusagen so ein Spezialfall braucht uns jetzt erstmal nicht so beschäftigen,
er ist eher relevant,
wenn ich meine Lösung nachher vorstelle.
Und als erste Übung wäre hier die, beispielsweise hier,
ist so ein Beispiel von einer veröffentlichten Regierungspressekonferenz.
Ich hoffe, man kann es lesen. Und uns geht
es jetzt darum, das Datum automatisiert zu extrahieren,
hier oben die Themen,
also die Kurzbeschreibung und die einzelnen Fragen und Antworten
Das sind immer mehrere. Und hier wäre es schön,
die auch aufgeschlüsselt zu haben nach einzelnen Fragen und Antworten.
Also nicht sozusagen, ob jetzt Frage oder Antwort,
aber sozusagen jeden Absatz einzeln zu erfassen.
Genau, und das wäre jetzt so die Aufgabe,
die ich mitgebracht habe.
Und man sollte noch erwähnen, falsch
Dass es, dass nicht alle Bundespressekonferenzen dort veröffentlicht sind,
sondern nur die bis 2013, also im 2.12.2013,
davor muss man dann das Archiv sich angucken.
Aber ich würde sagen, dass wir beide,
beide Fälle uns anschauen und für beides müsste man dann sozusagen Scrapper entwickeln.
Aber erst mal geht es nicht um den Schritt,
die verschiedenen, also mehrere zu downloaden, sondern wirklich nur eine.
Und am besten auch dieses Beispiel hier verwenden,
das ich angegeben habe, also diese Seite geht es letztlich.
Und wir gucken uns danach als zweite Aufgabe, Dann das an,
dass wir uns, dass wir mehrere downloaden wollen.
Und dafür müssen wir die... Entschuldigung. Dafür müssen wir dann
die Suche uns anschauen. Genau. Und hier sind dann
Regierungspressekonferenzen veröffentlicht, aber auch andere Dokumente. Und hier wäre es dann wichtig,
nur die Regierungspressekonferenzen auszuwählen und dann sozusagen eine Liste dieser
zu erstellen und die dann mit dem ersten Skript,
das wir geschrieben haben, dann auch dann lobben zu können.
Also es baut sozusagen aufeinander auf. Und hier wäre es
dann auch notwendig, die verschiedenen Seiten durchzugehen.
Also und ich würde sie bitten, wirklich zu gucken,
dass wir nicht zu viele Anfragen stellen. Das heißt,
ich habe in dem,
also in dem Code Also hier habe ich sozusagen das,
was meine Lösung nachher wäre, etwas beschnitten,
sodass sie dann damit arbeiten können, sozusagen als Hilfestellung.
Und hier wäre es wichtig in der U-Till,
Diese randomized Sleep-Funktion einzubauen, das sagt im Prinzip nur,
dass die Ausführung für eine gewisse Zeit gestoppt wird,
um nicht zu viele Anfragen zu stellen.
Genau. Und genau die Task-Snippets können sie verwenden,
wenn ihnen die Aufgabe zu schwer vorkommt.
Wenn sie den nicht perrennen wollen und ihren eigenen schreiben wollen,
können sie das gerne auch machen.
Genau. Das wäre sozusagen eine Hilfestellung. Wenn gewünscht
, genau
Und als dritte Aufgabe wäre dann das Ganze,
das Ganze in Scrapy zu schreiben.
Ich glaube, es ist zeitlich schwierig. Deswegen war ursprünglich
meine Aufgabe. Deswegen hatte ich mir gedacht,
wir schauen uns einfach meine Implementation an und kommentieren die.
Das heißt, sie schreiben die Kommentare für die Scrapy Implementation.
Und genau, dann würden wir die,
die nachher dann durchgehen
So, damit würde ich sie dann entlassen.
Wie gesagt, Kleingruppen bin und ich gehe auch rum und
werde auch weitere Fragen noch beantworten können.