Muszę zeskanować strony z karierami wielu firm (za ich zgodą).Scraping strony z obsługą ajaxów
ważnymi czynnikami w podejmowaniu decyzji, co mogę używać
- będę skrobanie około 2000 stron dziennie, więc trzeba przyzwoicie szybki rozwiązanie
- Niektóre z tych stron zapełnić danych za pośrednictwem ajax po załadowaniu strony.
- Mój webstack to Ruby/Rails z MySql itp.
- Napisałem skrobaki wcześniej, używając scrapy (python) (+ Selenium dla stron obsługujących ajax).
Moje wątpliwości
- Jestem zdezorientowany, czy mam iść z pytona (tj scrapy + selen, myślę, że jest to najlepsza alternatywa w Pythonie), albo zamiast tego wolą coś w Ruby (jak cała moja codebase jest w ruby).
- Scrapy + selen jest często powolny, czy istnieją szybsze alternatywy w ruby? (To ułatwiłoby podejmowanie decyzji) Najbardziej popularna alternatywa dla Ruby z obsługą stron ładowanych przez Ajax wydaje się być Watir Czy ktoś może komentować jej prędkość. są też jakieś inne alternatywy Ruby (np Mechanize/Nokogiri + coś innego dla Ajax Loaded stron)
EDIT
skończył przy użyciu Watir-webdriver + Nokogiri, tak że mogę wykorzystaj aktywny rekord podczas przechowywania danych. Nokogiri jest znacznie szybszy niż Watir-webdriver przy pobieraniu danych.
Scrapy byłaby szybsza, ale kompromis prędkości nie był tak znaczący, jak kompromis w zakresie obsługi różnego rodzaju stron internetowych w scrapach (np. Wyszukiwanie ajaxowe na niektórych stronach docelowych, które muszę koniecznie przejść) .
Mam nadzieję, że to pomoże komuś.
To może nie zmieścić się na przypadek użycia, ale na stronach AJAX z Mechanize/Nokogiri, co można zrobić, to odświeżenie tej strony co 5-10 sekund. Chociaż nie jest to idealne i zależy od wymaganej częstotliwości, możesz uzyskać wszystkie dane, które są ładowane przez te połączenia JS. –
Nie jestem całkowicie pewny, co mówisz, jest słuszne. Myślę, że mechanize/Nokogiri nie mają interpreterów javascript (http://stackoverflow.com/questions/3852678/can-mechanize-read-ajax-ruby) –
Nie, ale nawet jeśli dane są wypychane do tabeli po przerwie . Tak długo, jak te dane są utrwalone w tabeli, jeśli po prostu ponownie uzyskasz stronę, będziesz w stanie ją zeskrobać. Wystarczy tylko zweryfikować w przeglądarce, że po tym, jak dane strony są zapełniane przez AJAX, jeśli po odświeżeniu strony dane nadal tam są. To jest coś, co możesz użyć do skrobania Mechanize/Nokogiri, ale musisz ponownie załadować tę stronę. –