2016-09-10 3 views
8

Ruby, Selenium WebDriver 및 Nokogiri를 사용하여 웹 페이지에서 데이터를 검색하고 있습니다. 적절한 HTML이로드되면 특정 클래스의 내용을 인쇄합니다. 예를 들어봇을 사용하여 브라우저를 열고 수동으로 페이지를 조작 한 다음 계속 봇을 계속 사용할 수 있습니까?

,

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(',') 

내가 지금까지 가장 어려운 부분이 제대로로드 올바른 HTML을 받고 의해 발견했습니다. 예를 들어 내가 원하는 콘텐츠가 일부 자바 스크립트에 의해 숨겨져 있거나 다른 페이지에있을 수 있습니다.

Selenium을 사용하여 페이지를로드 한 다음 올바른 HTML이 표시되도록 페이지를 수동으로 조작 할 수 있습니까? then 봇이 완료되어 내용을 인쇄 할 수있게합니까?

+0

짧은 대답은 '예'입니다. Selenium은 GUI에서 브라우저를 열고 스크립트가 완료 될 때까지 열려 있습니다. –

답변

2

Selenium을 사용하여 양식 필드를 채우거나 버튼을 클릭하는 등의 웹 페이지와 상호 작용할 수 있습니다. 직접 자바 스크립트 코드를 실행할 수도 있습니다.

Selenium cheat sheet

편집 : 수동으로 웹 페이지를 조작 할 수 있도록 코드 실행을 중지 놀리려는를 사용

.

# 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

그 중 가장 시간이 많이 걸리는 부분입니다. 그 부분을 수동으로하고 나면 봇을 다시 시작하는 방법이 있습니까? –

+0

왜 그렇게 할 지 모르겠다. Selenium 드라이버는 항상 수동으로 수행 할 수있는 것보다 빠르게 웹 페이지와 상호 작용합니다. –

+0

모든 유스 케이스가 다르기 때문에 매번 다른 코드를 작성해야하기 때문입니다. HTML을 직접 가져 오는 것이 더 빠릅니다. –

-1

매우 쉽게 수행 할 수 있습니다. 나는 루비에 익숙하지 않지만 그 과정을 개략적으로 설명 할 것이다.

)) '계속하려면 콘솔에서 여기에 입력 유형 뭔가 히트'계속 = raw_input을을 (:

1) 드라이버 2) 페이지 3로 이동을 시작)를 파이썬이 예에서 사용자 입력 (요청

4) 그런 다음 원하는 모든 작업을 수행하십시오.

이 스크립트를 실행하면 질문에 멈추게됩니다. 그런 다음 브라우저를 수동으로 조작 할 수 있으며 완료되면 콘솔/cmd 창으로 이동하여 "go"를 입력하고 Enter 키를 누릅니다. 그런 다음 수동으로 브라우저를 떠난 곳부터 계속됩니다.