2013-01-09 6 views
2

Mechanize를 사용하여 로그인이 필요한 사이트를 크롤링하고 있습니다. 다음 코드는 나를 기록합니다.irb에서 여러 명령 실행

require 'mechanize' 

agent = Mechanize.new 
agent.get 'http://www.specialsite.com' 

agent.page.form.txtEmail = '[email protected]' 
agent.page.form.txtPassword = 'myPassword' 
agent.page.form.add_field! "__EVENTTARGET","btnLogin" 
agent.page.form.add_field! "__EVENTARGUMENT","" 
agent.page.form.submit 


agent.page.link_with(:text => "Special Link").click 

agent.page.form.txtSearch = "Search Text" 
agent.page.form.add_field! "__EVENTTARGET","lbtnSearch" 
agent.page.form.add_field! "__EVENTARGUMENT","" 
agent.page.form.submit 

내 질문은 내가 실험하고 나머지를 생성하는이 '에이전트'처럼 정의하는 객체에 액세스 할 수 있도록 내가 루비 IRB에서이 코드를 실행 어떻게입니다 필요한 코드는?

나는 '로드'를 시도했습니다. 명령을 실행하지만 '에이전트'와 같은 개체를 사용할 수 없습니다.

답변

3

쓰기이 그것이 같은 TEXTFILE에서 물건 오픈 IRB 입력 :

File.open("your_file","r").readlines.each{|line| eval(line)} 

이 도움이됩니까?

EDIT : 텍스트 파일은 IRB가 실행되는 디렉토리와 동일한 디렉토리에 있어야합니다. 일반적인 장점 : 텍스트 파일에서 무언가를 수정하는 것이 거대한 IRB 한 라이너에서하는 것보다 쉽습니다.

+0

왜 그냥'평가 File.read ("your_file")도' – horseyguy

+0

가능한. 물론 짧아. – Hisako

0

반복 코드이므로 모든 경우에 DRY (직접 반복하지 마십시오)를 구현해야합니다. 나는이 모든 것을 교실에서 끝내고 대리인을 돌려주는 방법을 가지고있다. 그런 다음 irb에서 클래스를 요구하고 클래스 변수 getmethod에 irb 변수를 설정합니다. 그리고이 방법은 당신은 이미 당신이 당신의 프로젝트 LATOR에 사용할 클래스의 시작이

2

사용 놀리려는 : 스크립트를 실행하면

require 'pry' 
... your code 
binding.pry 

그것이 binding.pry에서 중지하고 당신은 IRB 같은 REPL이 (그러나 더 나은) 객체를 평가할 수 있습니다. 계속하려면 exit을 사용하고 종료하려면 exit-program을 사용하십시오.

+0

이것은 정확히 내가 찾던 ... 고마워요! – user1077851

0

나는 Pry

를 사용하는 @pguardiaro에 동의하지만, 여기에 당신이 IRB에 그것을 할 방법은 다음과 같습니다

binding.eval(File.read("your_file.rb"), "your_file.rb"