Bardzo prosty C++ Web crawler / spider?

Próbuję zrobić bardzo prostą aplikację Web crawler / spider w C++. Szukano mnie w google dla prostego, aby zrozumieć tę koncepcję. I znalazłem to:

Http://www.example-code.com/vcpp/spider.asp

Ale, to trochę skomplikowane / trudne do strawienia dla mnie.

To, co staram się zrobić, to na przykład:

Wpisz url: www.example.com (użyję bash- > wget, aby pobrać zawartość / kod źródłowy)

Wtedy, będzie szukać, może " href" link, a następnie przechowywać w jakimś pliku danych.

Jakiś prosty tutorial, lub wytyczne dla mnie?

Dopiero zaczynam naukę C++ (1 miesiąc)

Author: Kenster, 2010-11-25

2 answers

W porządku, postaram się wskazać ci właściwy kierunek. Koncepcyjnie webcrawler jest dość prosty. Obraca się wokół struktury danych kolejki FIFO, która przechowuje oczekujące adresy URL. C++ ma wbudowaną strukturę kolejek w standardowym libary, std::queue, które można wykorzystać do przechowywania adresów URL jako ciągi znaków.

Podstawowy algorytm jest dość prosty:

  1. Zacznij od bazowego adresu URL, który wybierz i umieść go na górze twoja Kolejka
  2. Pop URL u góry Kolejka i pobierz go
  3. analizuje pobrany plik HTML i wyodrębnia wszystkie linki
  4. Wstaw każdy wyciągnięty link do kolejki
  5. Goto Krok 2, lub zatrzymać po osiągnięciu określonego limitu
Teraz, powiedziałem, że webcrawler jest koncepcyjnie prosty, ale wdrożenie go nie jest takie proste. Jak widać z powyższego algorytmu, będziesz potrzebował: biblioteki sieci HTTP, aby umożliwić pobieranie adresów URL, i dobrego parsera HTML, który pozwoli wyciągasz linki. Wspomniałeś, że możesz użyć wget do pobierania stron. To nieco upraszcza sprawy, ale nadal musisz przeanalizować pobrane dokumenty HTML. Poprawne parsowanie HTML jest zadaniem nietrywialnym. Proste wyszukiwanie <a href= będzie działać tylko czasami. Jeśli jednak jest to tylko zabawkowy program, którego używasz do zapoznania się z C++, proste wyszukiwanie ciągów może wystarczyć do Twoich celów. W przeciwnym razie musisz użyć poważnej biblioteki do parsowania HTML. Webcrawler może być używany do tworzenia stron internetowych, takich jak webcrawler, webcrawler, webcrawler, webcrawler, webcrawler, webcrawler, webcrawler, webcrawler, webcrawler, webcrawler, webcrawler. ludzie będą wkurzeni i prawdopodobnie zbanują Twoje IP, jeśli spróbujesz pobrać zbyt wiele stron, zbyt szybko, z tego samego hosta. Być może będziesz musiał wdrożyć jakąś politykę, w której webcrawler czeka na krótki okres przed pobraniem każdej witryny. Potrzebujesz też jakiegoś mechanizmu, aby uniknąć ponownego pobierania tego samego adresu URL, przestrzegaj wyłączenia robotów Protokół , unikaj pułapek gąsienicowych itp... Wszystkie te szczegóły sumują się, aby wdrożenie solidnego webcrawlera nie było takie proste. Zgadzam się z larsmanami w komentarzach. Webcrawler nie jest najlepszym sposobem na naukę C++. Ponadto, C++ nie jest najlepszym językiem do pisania webcrawler w. Surowa wydajność i dostęp niskiego poziomu uzyskany w C++ jest bezużyteczny podczas pisania programu takiego jak webcrawler, który spędza większość czasu czekając na rozwiązanie adresów URL i Pobierz. Moim zdaniem do tego zadania lepiej nadaje się język skryptowy wyższego poziomu, taki jak Python czy coś takiego.
 41
Author: Charles Salvia,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-19 01:53:43

Sprawdź ten web crawler i indexer napisany w C++ pod adresem: Mitza web crawler Kod może być używany jako odniesienie. Jest czysty i zapewnia dobry start dla webcrawler codding. Schematy sekwencji można znaleźć na powyższych stronach linków.

 4
Author: user2195463,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-10 10:51:26