2012-05-15 9 views

Odpowiedz

4

Nokogiri i Mechanize nie są pełnymi przeglądarek internetowych i zrobić nie uruchamiaj JavaScript w modelu DOM przeglądarki. Chcesz użyć czegoś w rodzaju Watir lub Selenium, które pozwalają używać Ruby do kontrolowania rzeczywistej przeglądarki internetowej.

+1

Jeśli chcesz zautomatyzować przeglądarkę obsługującą JavaScript, ale bez widocznego okna, wypróbuj przeglądarkę bez nagłówka, taką jak (capybara-webkit) [https://github.com/thoughtbot/capybara-webkit] lub (PhantomJS) [http: //phantomjs.org/] (są też inne). – echristopherson

+1

@echristopherson Dzięki; są to odpowiednio [capybara-webkit] (https://github.com/thoughtbot/capybara-webkit) i [PhantomJS] (http://phantomjs.org/) (stałe linki znaczników). – Phrogz

0

Nie wiem nic o zmechanizowaniu ani nokogiri, więc nie mogę ich szczegółowo opisać. Jednak kwestia uzyskania JavaScriptu po jego modyfikacji jest jedną z tych, które moim zdaniem można rozwiązać tylko przy użyciu JavaScript. Aby uzyskać nowo wygenerowany kod HTML, musisz pobrać .innerHTML elementu document. Może to być trudne, ponieważ musisz wstrzyknąć js na stronę.

Jedynym sposobem, jaki znam, aby to osiągnąć, jest napisanie wtyczki FireFox. Dzięki wtyczce możesz uruchamiać JavaScript na stronie, nawet jeśli nie jest to twoja strona. Przepraszam, że nie jestem bardziej pomocny, mam nadzieję, że to pomoże ci znaleźć właściwą drogę.

Jeśli jesteś zainteresowany wtyczek jest to jedno miejsce, aby rozpocząć: http: //anthonystechblog.wordpress.com/category/internet/firefox/

+0

Zamiast przewracać własną wtyczkę od podstaw, Greasemonkey mógłby prawdopodobnie to zrobić. – FatalError

2

Oprócz watir-webdriver i capybara-webkit, dobrym rozwiązaniem jest celerity, chociaż jest to tylko pakiet jruby.

6

Myślę, że dobrym rozwiązaniem jest coś takiego z Nokogiri, Watir i PhantomJs:

b = Watir::Browser.new(:phantomjs)

b.goto URL

doc = Nokogiri::HTML(b.html)

Powstały doc będzie od kiedy po skryptach zostały załadowane. A phantomjs jest fajny, ponieważ nie ma potrzeby ładowania przeglądarki.

Powiązane problemy