In Rahmen einen Projekts sollten automatisch Daten einer sehr alten Webanwendung aus dem Intranet automatisiert in eine Datenbank eingelesen werden. Mein Projektpartner war überrascht, wie schnell ein Screen-Scraping-Tool in .NET zusammengebaut ist, so dass zumindest für den Übergang auf ein aufwendiges Relaunch der Intranet-Seite mit entsprechenden Schnittstellen verzichtet werden konnte. Es folgt das Grundkonzept als kleines Tutorial. (Wichtig ist zu beachten, dass dieses Tool nur für eigene Websites eingesetzt werden sollte, da bei fremden Anbieten die Urheberrechte geachtet werden müssen – unbedingt vorher anfragen bzw. AGB lesen).
1.) Starten Sie Visual C# (in dem folgenden Beispiel Visual C# 2008 Express Edition, mit VB ist es sozusagen identisch) und legen Sie ein neues Windows Forms Projekt an.
2.) Ziehen Sie auf das Form zwei Buttons (cmdStart und cmdAuslesen), ein Label (lblAusgabe, am besten ohne AutoSize und mit Border) und einen WebBrowser (webMeinBrowser).
3) Doppelklicken Sie auf den Start-Button und erzeugen Sie damit cmdStart_click. Jetzt soll die zu analysierende Seite aufgerufen werden. Für Testzwecke können Sie gerne folgende Seite aus einem meiner Workshops verwenden, die eine Website mit Ajax simuliert.
http://frank-it-beratung.de/tutorialsetc/screenscrapingtutorial/
Geben Sie folgenden Code ein:
webMeinBrowser.Navigate(„http://frank-it-beratung.de/tutorialsetc/screenscrapingtutorial/“);
4) Testen Sie nun die Anwendung. Durch Klicken auf „Start“ sollte die Testseite geladen werden und sich im Sekundentag die Uhrzeit aktualisieren.
5) Jetzt geht es an das screen-scraping: Durch Klicken auf „Auslesen“ soll der Content in einen String zur Weiterverarbeitung ausgelesen werden – als erstes Beispiel der aktuelle Body (nicht der Quelltext!). Erstellen Sie durch Doppelklick auf den Button Auslesen cmdAuslesen_Click und schreiben Sie dort:
String s = webMeinBrowser.Document.Body.InnerHtml.ToString();
MessageBox.Show(s);
6.) Wenn Sie nur einen Teil der Website auslesen möchten ist dies auch möglich. Als erstes Beispiel dafür soll nur die Uhr ausgelesen werden. Sehen Sie sich den Quelltext an (am besten mit Firebug oder den IE Entwicklertools). Da die Uhrzeit mit dem Tag <strong id=“uhr“>…</strong> getaggt ist, kann man da auch in .NET komfortabel darauf zugreifen. Erweitern Sie cmdAuslesen_Click (oder erstellen Sie einen Timer) wie folgt:
String t = webMeinBrowser.Document.GetElementById(„uhr“).InnerText.ToString();
lblAusgabe.Text = t;
Natürlich können Sie auch Text auslesen, der nicht mit einer ID versehen ist. Details dazu und einige weitere Tipps nächste Woche im zweiten Teil des Tutorials.
P.S.
Probleme? Fragen? Anregungen? Ich helfe jederzeit und gerne – einfach einen Kommentar oder Mail schreiben, die Antwort kommt schnellstmöglich. Unternehmen, die Unterstützung, Beratung oder Schulung bei der API- oder Webprogrammierung, der Social-Media-Entwicklung oder dem Social-Media-Management benötigen finden zudem entsprechende Angebote meiner Firma auf der Website www.Frank-IT-Beratung.de
Pingback: Tutorial: Ein Facebook Pinnwandeintrag mit Visual Basic oder C# (Teil 2) « Frank IT Consulting&Training