Czasami jest tak że potrzebujemy danych z konkretnej strony, ale ona nie udostępnia żadnego API. W takim wypadku rozwiązaniem może być web crawler który wyciągnie te dane prosto z HTMLa. Pokarzę wam dziś jak takiego web crawlera napisać.

Pierwszą rzeczą jaką należy zrobić to zaimportować bibliotekę JSoup w postaci JARa lub w postaci zależności. Gdy już to zrobimy zabieramy się za tworzenie crawlera. W tym prostym przykładzie będzie on pobierał tytuły postów z tego bloga i odnośniki do nich, a następnie zapisywał je w pliku tekstowym.

Przykładowy tytuł posta na stronie wygląda tak:

Wyciągamy więc każdy nagłówek z klasą post-title. Tworzymy więc obiekt Document który pobierze całego HTMLa ze strony a następnie tworzymy obiekt Elements który wyciągnie z dokumentu wszystkie elementy z klasą post-title. Iterujemy teraz przez elementy i zapisujemy tekst w nich zawarty w liście. Podobnie robimy gdy chcemy wyciągnąć odnośniki. Tworzymy w tym celu nowy dokument metodą parse() a jako argument podajemy HTML wcześniej wyciągniętych elementów. Następnie tworzymy nowy obiekt Elements który będzie zawierał elementy z tagiem a i znowu iterujemy przez elementy i zapisujemy odnośniki do nowej listy.

Teraz gdy mamy już dane możemy je wykorzystać. W moim wypadku będzie to prosty zapis do pliku.

 

Podziel się z innymi!Share on Facebook
Facebook
Share on Google+
Google+
Tweet about this on Twitter
Twitter