avatar
Today is Friday
October 18, 2019

June 19, 2007

Html2Xhtml & Screen Scraping

by tsnoei — Categories: Uncategorized — 2 Comments - Afdrukken Afdrukken

HTML.pngWil je echt leuk informatie van het web plukken dan is die vaak niet toegankelijk via RSS. Neem bijvoorbeeld de site jaap.nl. Zoek je een koophuis dan moet je bij Jaap zijn en niet meer bij Funda. Want wat doet Jaap, Jaap scraped alle webpagina’s van Funda om de inhoud vervolgens op hun eigen website te publiceren. Scrapen is een methode om de voor jou doel relevante gegevens uit een (in dit geval) webpagina “te vissen”. Beleg je, dan is het bijvoorbeeld leuk om aan koersinformatie te komen. Denk maar niet dat die als RSS beschikbaar is. De gegevens zijn wel beschikbaar op openbaar toegankelijke webpagina’s van bijvoorbeeld morningstar.nl.

Nu is het voordeel van RSS dat het een XML standaard is en XML is gemakkelijk te gebruiken. HTML is echter een heel ander verhaal. HTML stelt lagere eisen aan consistentie en is daarom ook moeilijker te intepreteren. Wil je een HTML scrapen dan kun je voor de optie kiezen dit met behulp van regular expressions te doen. Ik heb zelf echter altijd het probleem dat ik vergeet hoe de syntax ook al weer was voor bepaalde zoekcriteria. Enkele jaren geleden heb ik daarom een setje klasses geschreven die HTML naar XML converteren. (Onder dit artikel vind je een link naar de download) Vervolgens kun je de gegevens in de HTML gemakkelijk parsen met behulp van bijvoorbeeld een XmlDocument object. Let op, het is geen rocket science maar het werkt en ik ben nog geen pagina tegengekomen die niet met de klasses kon worden geintepreteerd. Het is geen probleem als tags in de HTML die je om wil zetten niet worden gesloten (zoals bijv <P> of <BR>). De classes zorgen zelf dat dit op de juiste manier in de XML wordt afgehandeld.

Hoe werkt het?

<code>
System.Net.WebClient wc = new System.Net.WebClient();
string Url = "http://www.google.nl";
string HtmlCode = wc.DownloadString(Url); //Download HTML
XmlDocument xmldoc = Html2Xhtml.Convert(HtmlCode);
string PageTitle = xmldoc.SelectSingleNode("/html/head/title").InnerText;
</code>

Vervolgens kun je je uitleven op elke willekeurige pagina, van het KNMI tot flitsinformatie.

Download Html2XHtml.zip

Facebook comments:

2 Comments »

  1. Hoi Ton, het htmltoxhtml bijzonder handig!
    Voor mijn site http://www.roven.nl had ik in het verleden ook een content scraper met uitzendingen over vissen. Maar dan op de string.Substring(string.indexOf(..).length- manier. Drama dus. Na een verandering van hun html ging alles over de pis. Toen niet meer de moeite genomen om de onleesbare code te herschrijven. Maar ik ga het nu weer proberen! Easy op deze manier.
    Thanx!

  2. Kris says:

    Ich kann nicht Deutsch sprechen. Aber es ist eine sehr nützliche Klasse. Vielen Dank.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© 2019 Snoei's .NET blog All rights reserved - Wallow theme v0.44 by ([][]) TwoBeers - Powered by WordPress - Have fun!