Java: Internetseiten auslesen – Web Scraping mit jSoup

Posted: November 4th, 2013 | Filed under: Internet, Java, Programmieren, Tutorials | Tags: , , , , , , , , | 2 Comments »

imageUm Informationen aus einer Webseite heraus zu extrahieren (engl. web scraping), gibt es viele verschiedene Vorgehensweisen und Frameworks. Nach langer Suche bin ich endlich auf ein einfaches und gut dokumentiertes Framework gestoßen: jSoup

jSoup ist eine Java-Bibliothek mit der es möglich ist mittels CSS-Selektoren und dem Document Object Model (DOM), Seiteninhalte extrem einfach abzugreifen. Das folgende Beispiel erläutert die Funktionsweise des Frameworks und die Einfachheit der Handhabung.

Webseite analysieren

Ziel unseres Tutorial ist es, auf der Wikipedia Startseite die Ereignisse der “Was geschah am <aktuelles Datum>?”-Kategorie auszulesen.

Mit Hilfe der Debug-Konsole im Google Chrome Browser und dem Inspektor ist es möglich die HTML-Struktur zu genau zu analysieren. Unsere Informationen die wir abgreifen möchten befinden sich in einer Liste innerhalb des DIV mit der Id hauptseite-ereignisse.

image

Beispiel – Wikipedia parsen

Herunterladen könnt ihr die Java-Bibliothek jSoup hier: http://jsoup.org/download

Nachdem ihr die .jar-Datei jsoup-X.X.X.jar in euer Projekt eingebunden habt (so wird’s gemacht http://www.javabeginners.de/Grundlagen/Bibliothek_einbinden.php), könnt die das Framework wie folgt verwenden:

import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class jSoupExample {

    public static void main(String[] args) {

        try {
            // Wikipedia Seite laden
            Document doc = Jsoup.connect("http://de.wikipedia.org/wiki/Wikipedia:Hauptseite").get();
           
            // Alle Listenelemente über den entsprechenden Selektor markieren
            // Ein Leerzeichen initiert ein Kindelement des Elternelementes (links)
            // div#hauptseite-ergeignisse  => Der DIV mit der ID hauptseite-ereignisse (# => id)
            // div.inhalt => Der DIV mit der Klasse inhalt (. => class)
            Elements ereignisse = doc.select("div#hauptseite-ereignisse div.inhalt ul li"); 

            // Selektierte Elemente ausgeben ohne HTML-Tags
            for (Element e : ereignisse) {
                System.out.println(e.text());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Konsolenausgabe

Führt man das obige Quellcode-Stück aus, so wird unser gewünschter Inhalt zeilenweise wie folgt ausgegeben:

1763 – In Havanna wird mit dem Bau der Festungsanlage San Carlos de La Cabaña begonnen.
1813 – Der an der badischen Revolution von 1848/49 beteiligte Politiker Lorenz Brentano, nach deren Scheitern im US-Exil und dort 1877 bis 1879 Kongress­abgeordneter, kommt zur Welt.
1913 – Am Königlichen Hoftheater Stuttgart wird Walter Braunfels’ Oper Ulenspiegel uraufgeführt.
1913 – Ein von Marseille kommender Schnellzug kollidiert bei Melun mit einem Postzug.
1988 – Die Uraufführung von Thomas Bernhards Drama Heldenplatz am Wiener Burgtheater löst einen Skandal aus.

Alternativen

Viel Spaß beim Auslesen!


Ubuntu: Oracle JDK7 via Konsole installieren

Posted: November 3rd, 2013 | Filed under: Programmieren, Tutorials | Tags: , , , , , , , | 1 Comment »

oracle_java-100026145-largeDa die vorinstallierte JavaVM-Implementierung OpenJDK häufig Probleme macht habe ich mich dazu entschlossen auf meinem Server Oracle JDK7 zu installieren. Standardmäßig sind diese Pakete seltsamerweise jedoch nicht in den normalen Ubuntu Repos zu finden. Hier eine kleine Anleitung wie ihr Oracles JDK7 schnell und einfach dennoch per APT-Paketverwaltung installieren könnt.

Anleitung

Paketquelle von webupd8team hinzufügen:

sudo add-apt-repository ppa:webupd8team/java

Neueinlesen der Paketlisten:

sudo apt-get update

Oracle JDK7 installieren:

sudo apt-get install oracle-jdk7-installer

image

Oracle Java7 aktivieren, indem ihr die entsprechende VM per Eingabe auswählt (siehe Screenshot 2):

sudo update-alternatives –-config java

image


Android: Play Store, Facebook und Co. können sich nicht mehr verbinden, der Browser geht aber noch

Posted: Oktober 22nd, 2013 | Filed under: Mobile, Tutorials | Tags: , , , , , | No Comments »

imageHatte neulich das Problem, dass sich einige Apps, wie beispielsweise der Play Store, die Facebook-APP oder die GoogleMail-APP nicht mehr verbinden konnten, obwohl WLAN mit Internetzugang vorhanden war.

Nach kurzer Recherche bin ich auf folgende skurrile Lösung gekommen:

Stellt eure Uhrzeit und euer Datum richtig ein (http://www.uhrzeit.org/atomuhr.php). Dies könnt ihr unter Einstellungen –> Datum und Uhrzeit (Im Reiter System) realisieren.


Linux (Ubuntu) unter Windows XP/7/8 und GRUB entfernen

Posted: August 6th, 2013 | Filed under: Betriebsysteme, Tutorials | Tags: , , , , , | 10 Comments »

1) MbrFix herunterladen

Unter http://www.sysint.no/products/Download/tabid/536/language/en-US/Default.aspx 

2) Entpacken

MbrFix In einen entsprechenden Ordner entpacken, zum Beispiel auf dem Desktop.

image

3) Windows-Konsole öffnen

Windows-Konsole öffnen (via Start->Ausführen und cmd eingeben)

4) MbrFix ausführen

Mit Hilfe folgendem Befehl kann der GRUB-Bootloader erfolgreich überschrieben werden, je nach dem ob ein Windows-64 oder Windows-32-Bit-System verwendet wird MbrFix.exe oder MbrFix64.exe verwenden:

MbrFix64.exe /drive 0 fixmbr /yes

image

5) Neustarten

Nun sollte bei einem Neustart kein nerviger GRUB-Bootloader mehr erscheinen.

6) Linux Partitionen formatieren

Jetzt müssen lediglich noch die nutzlosen Linux-Partitionen verschwinden. Dies kann über die Datenträgerverwaltung erledigt werden, welche ihr wie folgt öffnen könnt:

Start –> Ausführen –> Diskmgmt.msc

image

image

Nachdem die Partition erfolgreich gelöscht wurde kann der frei gewordene Speicherplatz wieder dem Datenträger zugewiesen werden (via Rechtsklick auf jeweiligen Datenträger –> Volume erweitern…).

Der Rechner ist nun wieder frei von Linux, GRUB und Co…

 Smiley


PhoneGap Installation & Erste Schritte (Windows)

Posted: Juli 20th, 2013 | Filed under: Internet, Tutorials | Tags: , , , , , | No Comments »

Da die Installationsanweisung von PhoneGap zum Teil sehr ungenau ist, hier die einzelnen Schritte zum erfolgreichen Einrichten der Entwicklungsumgebung und dem ersten Projekt.

Installationen

    1. JDK 7 (64-Bit) installieren (Achtung JRE reicht nicht!) http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
    2. Android SDK installieren (64-Bit) http://developer.android.com/sdk/index.html
    3. “tools”-Ordner des Android SDK zur Umgebungsvariable “PATH” hinzufügen
    4. Eclipse Classic installieren (64-Bit) http://www.eclipse.org/downloads/
    5. Eclipse ADT-Plugin installieren http://developer.android.com/sdk/installing/installing-adt.html
    6. PhoneGap herunterladen und in ein Verzeichnis entpacken http://phonegap.com/download/
    7. Ant (http://ant.apache.org ) herunterladen und entpacken
    8. Ant “bin”-Verzeichnis zur Umgebungsvariable “PATH” hinzufügen
    9. JAVA_HOME Umgebungsvariable auf Pfad des JDK setzen

Projekt erstellen

Navigiere dich über die Konsole in das PhoneGap-Verzeichnis (hier “cd D:\Programme\Android\phonegap-2.5.0\lib\android\bin”), und generiere dir mit Hilfe der “create.bat” ein Projekt.

image

image

Im Anschluss darauf wird das Projekt automatisiert, unter dem angegeben Pfad, erzeugt.

image

Projekt importieren

Nun könnt ihr das so eben erstellte Projekt in Eclipse importieren.

image

PhoneGap App – Testen

Standardmäßig befindet sich bereits eine Test-HTML-Applikation im “assets/www”-Verzeichnis. Um die Applikation schließlich auf einem Android-Gerät oder auf dem Android-SDK mitgelieferten Emulator zu testen, so kann die Applikation per Rechtsklick auf den Projekt-Ordner mit dem Dialog-Befehl “Run as >Android Application” gestartet werden. Im Anschluss darauf öffnet sich ein Modal-Fenster, in welchem man ein bereits angeschlossenes Android-Geräte, falls bei diesem bereits das USB-Debugging aktiviert ist, oder ein Virtuelles Gerät, welches man über einen Manager erstellt, auswählen kann.

Testen im Emulator

Da der mitgelieferte Emulator sehr langsam ist, bietet es sich an ein echtes x86 Image zu installieren. Dies könnt ihr wie folgt realisieren (funktioniert nur bei Intel Prozessoren). Im Android SDK Manager einen Haken bei “Intel x86 Atom System Image” machen.

image

Hier eine genau Anleitung wie ihr das Image dann verwendet: http://software.intel.com/en-us/articles/installing-the-intel-atom-tm-android-x86-emulator-image-add-on-from-the-android-sdk-manager