Search Engine

Webcrawler

Door Roel911 op woensdag 3 februari 2016 21:21 - Reacties (16)
Categorie: SE, Views: 2.905

Hallo iedereen!

Ik ben een webcrawler in C++ aan het maken. Natuurlijk er zijn al veel (opensource) projecten en de discussie of C++ hier de perfecte taal voor is, wil ik niet aangaan. Maar 1 ding staat voor mij vast, het is ontzettend leuk en leerzaam om dit te ontwikkelen.

Mogelijkheden hoe een zoekmachine een URL toevoegt:
- Links uit beginpagina, die weer aan de te crawlen sites wordt toegevoegd.
- Gebruikers die een site voorleggen aan de te crawlen URL.
- De brute-force methode; ga een hele hoop mogelijke URL´s af.
- Er zijn nog meer manieren, zoals het gebruik van een woordenboek, het uitvoeren van javascript op de opgehaalde pagina en andere zoekmachines raadplegen.

De brute-force methode ben ik voor gegaan, omdat dit (voor mij) makkelijker te ontwikkelen is. Uiteindelijk is het uiteraard het beste om alle drie de genoemde methodes the implementeren.

Volgens https://www.sidn.nl/a/kennis-en-ontwikkeling/statistieken zijn er eind december 2015 > 5,6 miljoen .nl domeinnamen in gebruik. Niet op elk domein staat een website, maar laten we dit aanhouden als potentieel maximum. Mijn crawler heeft van het potentieel maximum 1/27 van de index van .nl-domeinen gecrawled. Hierin zijn alle domeinnamen tot en met 5 tekens uitgeprobeerd. Elk domein had 3 seconden de tijd om te reageren, anders zou de totale crawl te lang duren. Van de .com domeinnamen (totaal > 100 miljoen) heb ik er op deze manier > 2 miljoen opgehaald.

De performance van DNS is erg belangrijk, vandaar dat ik deze crawls op een VPS draaide. Ik heb libcurl gebruikt voor het DNS- en HTTP-gedeelte. De huidige versie (alpha) slaat de pagina´s op als losse bestanden, wat zowel Windows als Linux niet grappig vinden. Connecten met een database staat op de to-do list, evenals het ondersteunen van robots.txt en sitemap.xml

Uiteindelijk wil ik een soort index-indexer maken dat van elk domein ter wereld (behalve wellicht de nieuwe domeinnamen zoals http://mooie.auto) de index, robots.txt en sitemap.nl ophaalt, indexeert en een gui. Hiemee kunnen gebruikers of andere bots dan weer leuke/nuttige zaken doen.

Wat vinden jullie ervan?