web mining Übung jobo und dom
DESCRIPTION
Web Mining Übung Jobo und DOM. Wintersemester 2006/2007 Universität Hildesheim. Thomas Mandl Information swissenschaft Universität Hildesheim [email protected]. Web Crawling mit Jobo. Jobo open source Java Crawler Start aus Eclipse Bedienung per GUI als download Manager Struktur - PowerPoint PPT PresentationTRANSCRIPT
Web Mining
Übung
Jobo und DOM
Wintersemester 2006/2007
Universität Hildesheim
Thomas Mandl InformationswissenschaftUniversität Hildesheim [email protected]
2
Web Crawling mit Jobo
Jobo open source Java Crawler Start aus Eclipse Bedienung per GUI als download Manager
Struktur net.matuschek.examples.LogUrl
Start von der Kommandozeile net.matuschek.jobo.Swing...
Klassen für GUI
3
Struktur Jobo
net.matuschek.http.HttpDocManager
processDocument(HttpDoc doc)
net.matuschek.http.HttpDocManager
processDocument(HttpDoc doc)
net.matuschek.Spider.WebRobot
• Crawling Logik•HttpDocManager als
Eigenschaft•work()
net.matuschek.Spider.WebRobot
• Crawling Logik•HttpDocManager als
Eigenschaft•work()
net.matuschek.Html.HtmlDocument
•getLinks()•getElements (String)• Strukturiertes Modell (DOM)
aus Seite wird erstellt
net.matuschek.Html.HtmlDocument
•getLinks()•getElements (String)• Strukturiertes Modell (DOM)
aus Seite wird erstellt
net.matuschek.Http.HttpDocument
• http Header•getURL()
net.matuschek.Http.HttpDocument
• http Header•getURL()
4
Aufgabe HTTPDokument
Ausgabe der gefundenen URLs und Header Ausgangspunkt Applikation net.matuschek.examples.LogUrl
Start von der Kommandozeile Benutzt DocumentManager URLLogger Im DocumentManager Änderungen einfügen
Z.B. wr.write(httpDoc.getContent().length + " ");
wr.write(httpDoc.getHttpHeaders().toString());
5
HTMLDokument
Analyse von HTML Eigenschaften in einem HTTPDocumentManager Wie viele Links enthalten die Seiten? Wie viele Tabellen enthalten die Seiten?
if (httpDoc.isHTML()) {
HtmlDocument htmlDoc = new HtmlDocument(httpDoc.getURL(),new String (httpDoc.getContent()));
wr.write(httpDoc.getURL().toString() + " ");
String s = " " + htmlDoc.getLinks().size();
wr.write(s);
s = " " + htmlDoc.getElements ("table").size();
wr.write(s);
System.out.println (htmlDoc.getElements ("table").size() + " ");
System.out.println (new String (httpDoc.getContent()));
6
Exkurs: Document Object Model
HTML-Seite Browser-Ansicht HTML Code DOM
DOM „standardisiertes Objektmodell und API fuer die
Verarbeitung von XML- HTML- und CSS-Dokumenten.“
„Satz von Schnittstellen, der ein Dokument in einer Baumstruktur darstellt. „
http://paris.cs.uni-magdeburg.de/lehre/sommer-02/pro-xml/rud_s.pdf
7
8
DOM Beispiel
9
DOM Beispiel
10
Exkurs: Document Object Model
Interfaces Document – oberster Knoten Element, Attr - kann Kinder vom Typ Text oder
EntityReference haben. Funktionen
getNodeName () getNodeValue () getChildNodes ()
Tidy Parser erzeugt in Jobo für uns schon das DOM in einem HTMLDocument
11
Durchlaufen von Elementen
Iterator it = ( doc.getRootElement().getChildren()).iterator();
int i = 0; while( it.hasNext()) { Element current = ( Element ) it.next();
Betrachten von Elementen
Element el = (Element)links.elementAt(i);
if (el.getNodeName().equalsIgnoreCase ("a") )
el.getFirstChild().getNodeValue ());
12
DOM in Jobo
Erzeugen von Vektoren mit bestimmten Elementen
Vector links = htmlDoc.getLinks();
Vector tables =htmlDoc.getElements("tables");
Vector titles = new Vector();
extractElements(getDomDoc().getDocumentElement() , "title", titles);
13
DOM in Jobo
Zugriff auf Knoten (Elemente)
if (titles.size() == 0 )
Element e = (Element)titles.elementAt(0);
Vector links = getLinks();
for (int l=0; l<links.size() ;l++) {
URL tempUrl = (URL)links.elementAt(l);
if (tempUrl.getFile().endsWith("pdf")
14
HTMLDokument
Auslesen der Eigenschaften
Welchen Titel hat die Seite?if (titles.size() != 0 ) {
try {
Element e = (Element)titles.elementAt(0);
if (e.getFirstChild() != null)
s = e.getFirstChild().getNodeValue ();
wr.write(" " + s);
}
catch (Exception e) {
...
}
15
Ergebnis
http://www.matuschek.net/blog/ 143 2 Blog 0 http://www.matuschek.net/sitemap/ 205 1 Sitemap 0 http://www.matuschek.net/search/ 15 2 Suche 0 http://www.matuschek.net/impressum/ 16 1 Impressum 0 http://www.matuschek.net/travel/ 45 1 Reisen 0 http://www.matuschek.net/freizeit/ 24 1 Freizeit 0
16
HTMLDokument
Analyse von Links Wohin führen die Links ? Wie lange sind Link-Labels in verschiedenen Seiten?
Hinzufügen neuer Funktionen in HtmlDocument getTitle () getExternalLinks ()