2012-10-21 15 views
5

Próbuję zbudować coś, co przeszukuje zawartość ze strony z nieskończonym przewijaniem. Jednak nie mogę dostać rzeczy spod pierwszej "przerwy". Jak mam to zrobic?Jak przeszukiwać stronę z nieskończonym przewijaniem?

+1

Będziemy musieli wiedzieć, w jaki sposób wprowadzono nieskończone przewijanie, aby odpowiedzieć na twoje pytanie. Prawdopodobnie odbywa się to przy użyciu wywołań AJAX. Oznacza to, że jeśli twój robot jest napisany w języku po stronie serwera, takim jak ruby, musisz wykonać te javascript na tej stronie. – bigblind

+0

Wdrożono za pomocą Ajax. – user1319169

Odpowiedz

7

Nieskończone przewijanie jest prawie zawsze wykonywane w JavaScript przy użyciu technologii AJAX lub pokrewnej. W związku z tym nie wystarczy, aby twój robot sieciowy pobierał kod HTML i parsował go; musi pobrać i wykonać javascript, lub przynajmniej przeskanować go pod kątem wywołań AJAX.

Wykonanie pełnej wersji javascript jest prawdopodobnie najlepsze (tj. Będzie najbardziej gwarantowane do pracy), ale jest prawdopodobnie najtrudniej zrobić.

Skanowanie JavaScript dla żądań AJAX i/lub szukasz funkcji, które wykonują wywołania AJAX, a następnie wykonaj manipulacji DOM będzie prawdopodobnie najprostszy (w stosunku do pełnej JS wykonanie)

+0

Dzięki. Ponieważ jestem względną nowicjuszką, czy możesz dać mi przykład, jak to zrobić? – user1319169

+1

Nie jest to proste. Ale napisałeś swojego robota, aby odebrał kod HTML i przeanalizował go, niech szuka tagów 'script', uzyska URL z atrybutu' src', następnie pobierze JS i zeskanuje 'xmlhttp' i co nie. – cegfault

+0

Nawet skanowanie dla xmlhttp może być skomplikowane, ponieważ prawdopodobnie jest wywoływane przez inną funkcję. A więc znajdźmy wywołanie xmlhttp, które jest używane przez $ .ajax, teraz musisz powrócić do miejsca, w którym jest wywoływany $ .ajax, który może być inną funkcją zdefiniowaną przez użytkownika. W skrócie, musisz przejść cały stos wywołań, aby znaleźć adres URL pobieranego zasobu, ale jest więcej problemów, adres URL będzie budowany dynamicznie. Aby rozwiązać ten problem, Google opiera się na webmasterach dodających określone znaczniki, aby umożliwić przeszukiwanie stron ajax, – bigblind

0

AJAX żądanie nie różni się od innych życzenie . Po prostu przesyłasz wniosek, analizujesz wynik, a tam masz dane.

Może to zająć trochę doświadczenia, jeśli nie zrobiłeś tego wcześniej, ale brzmi to jak dobra lekcja.

3

Ta odpowiedź powinna być odpowiednia dla dużego odsetka nieskończonych przewijaczy, oczywiście twój przebieg może się różnić.

Większość nieskończonych przewijaczy pracuje z użyciem przesunięcia i po prostu chwyta następny fragment przedmiotów z przesunięcia. Dokładnie tak samo, jak może działać stronicowanie, przechodząc przez z tą różnicą, że przesunięcia są przechowywane i używane do wykonania nowego żądania.

Mając to na uwadze, jeśli otworzysz pasek narzędzi dla programistów w przeglądarce Chrome lub Firefox i sprawdzisz kartę sieciową, najprawdopodobniej zobaczysz nadchodzące żądania podczas przewijania w dół.

Spójrz na parametry na życzenie, a najprawdopodobniej zobaczyć coś

GET /api/v2/books?offset=100=count=10 
GET /api/v2/books?offset=110=count=10 
GET /api/v2/books?offset=120=count=10 

Wiedząc o tym, można bardzo łatwo ignorować rzeczywistości skrobanie z HTML docelowej, i po prostu skorzystać z ich wewnętrzną cel URI składaj swoje prośby.

+0

To działa idealnie. – chris

Powiązane problemy