Używam Mechanize, chociaż jestem otwarty na Nokogiri, jeśli Mechanize nie może tego zrobić.Jak mogę zdrapać coś po tym, jak JS zmienił DOM?
Chciałbym zeskanować stronę po wczytaniu wszystkich skryptów, a nie wcześniej.
Jak mogę to zrobić?
Używam Mechanize, chociaż jestem otwarty na Nokogiri, jeśli Mechanize nie może tego zrobić.Jak mogę zdrapać coś po tym, jak JS zmienił DOM?
Chciałbym zeskanować stronę po wczytaniu wszystkich skryptów, a nie wcześniej.
Jak mogę to zrobić?
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/
Zamiast przewracać własną wtyczkę od podstaw, Greasemonkey mógłby prawdopodobnie to zrobić. – FatalError
Oprócz watir-webdriver i capybara-webkit, dobrym rozwiązaniem jest celerity, chociaż jest to tylko pakiet jruby.
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.
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
@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