2016-09-10 12 views
8

Używam Ruby, Selenium WebDriver i Nokogiri do pobierania danych ze stron internetowych. Po załadowaniu prawidłowego kodu HTML wydrukuję zawartość pewnej klasy.Czy można użyć bota do otwarcia przeglądarki, ręcznie manipulować stroną, a następnie nadal używać bota?

Na przykład

require "selenium-webdriver" 
require "nokogiri" 
browser = Selenium::WebDriver.for :chrome 
browser.get "https://jsfiddle.net" 
doc = Nokogiri::HTML.parse(browser.page_source) 
doc.css('.aiButton').map(&:text).join(',') 

Znalazłem zdecydowanie najtrudniejsza część jest uzyskanie poprawnego HTML załadowany prawidłowo. Na przykład treść, którą chcę, może być ukryta przez niektóre javascript lub może znajdować się na innej stronie.

Czy można użyć Selenium do załadowania strony, a następnie ręcznie manipulować stroną, aby wyświetlić prawidłowy kod HTML, a następnie , a następnie zezwolić botowi na dokończenie i wydrukowanie treści, do której ma się on przydać?

+0

krótka odpowiedź brzmi tak. Selenium otworzy przeglądarkę w twoim GUI i pozostanie otwarta do czasu ukończenia twojego skryptu. –

Odpowiedz

2

Możesz używać Selenium do interakcji ze stroną - wypełnij pola formularza, kliknij przyciski itp. Możesz nawet wykonać własny kod javascript.

Selenium cheat sheet

Edit:

Korzystanie Pry zatrzymać wykonanie kodu, dzięki czemu można ręcznie manipulować stronę internetową.

# Code for starting Selenium session and opening the web page 
... 

# Use pry to stop the code execution. 
# Resume the program using command 'exit' in the pry context 
require 'pry'; binding.pry 

# Code to get results after you manually manipulate the web page 
... 
+0

Odkryłem, że to najbardziej czasochłonna część. Czy istnieje sposób robienia tej części ręcznie, a następnie wznowienia bota po zakończeniu? –

+0

Nie wiem, dlaczego byś to zrobił. Sterownik Selenium będzie zawsze wchodzić w interakcję ze stroną internetową szybciej, niż byłbyś w stanie ręcznie. –

+0

To dlatego, że każdy przypadek użycia będzie inny, więc za każdym razem będę musiał napisać inny kod. Szybciej po prostu sam umieścisz kod HTML. –

-1

Możesz to zrobić całkiem łatwo. Nie znam Rubiego, ale opiszę ten proces.

1) uruchomić sterownik 2) Przejdź do strony 3), a następnie poprosić o dane wprowadzone przez użytkownika (w python 2 Np: kontynuować = raw_input ('type coś i wciśnij enter tutaj w konsoli, aby kontynuować'))

4) następnie wykonaj wszystkie inne czynności, które chcesz wykonać.

Po uruchomieniu skryptu zatrzyma się na pytanie. Następnie możesz ręcznie manipulować przeglądarką i kiedy skończysz, przejdź do okna konsoli/cmd i wpisz "go" i naciśnij enter. Następnie będzie kontynuować od miejsca, w którym ręcznie opuściłeś przeglądarkę.

Powiązane problemy