2016-08-16 2 views
0

작업 지금 내가 위치 제목을 반환하는 부분이 잘 작동하기 때문에 '.jobtitle'클래스가 존재하는 사실을 알고루비 기계화을 클릭하면 다음

while counter <= 3 
    url = "http://www.indeed.ca/jobs?q=" << job_title_search << "&l=" << job_location << ",+ON&start=" << (counter * 20).to_s 
    counter += 1 
    doc = Nokogiri::HTML(open(url)) 

    # can't put in if loop to only perform once for some reason 
    page = agent.get(url) 

    current_page = agent.page.uri 
    puts current_page 

    doc.css(".result").each do |item| 
    job_title = item.at_css(".jobtitle").text[/[^\s][a-zA-Z -]*/] 
    job_company = item.at_css(".company").text[/[^\s][a-zA-Z -]*/] 
    full_job = job_title + " - " + job_company 

    agent.current_page.link_with(:class => '.jobtitle').click 
    posting_page = agent.page.uri 
    puts posting_page 

    if cache.include?(full_job) == false 
     cache << full_job 
     puts "#{job_title} - #{job_company}" 
    end 
    end 

    puts "" 
end 

내 코드의 긁는 부분 없습니다. 내가 알아 내려고하는 것은 Mechanize가 '클릭'기능을 사용하지 못하게하는 이유입니다. 위키피디아 메인 페이지에서 수행 한 다른 테스트에서는 CSS ID, 클래스, & 텍스트에서 잘 작동합니다.

제 질문은 그것이 클릭 기능에서 실패하는 원인이 무엇입니까? 그것이 생성하는 오류는 일반적인 "정의되지 않은 메서드 ''nil : NilClass"를 클릭하는 것입니다.

답변

0

click 메서드를 호출하는 개체가 nil 인 오류 메시지가 표시됩니다. 여기 click 전화 : link_with에 전화가 nil를 반환하는 것을

agent.current_page.link_with(:class => '.jobtitle').click 

... 그래서 우리는 추론 할 수있다.

귀하의 페이지에 class 속성이 .jobtitle 인 링크가 페이지에 없기 때문에 실패 할 것으로 예상됩니다. 대신 페이지에 class 속성이 jobtitle 인 링크가있을 수 있습니다. 그래서 :

agent.current_page.link_with(:class => 'jobtitle').click 
+0

은 내가 이전 스크립트의 '.jobtitle'클래스에 접근하고 있습니다 때문에 (다만 다시 확인 내가 너트 않을거야 만들기 위해 그것을 시도)도 처음에는 있지만, 그 아니라고 생각 . – Mitchell

+0

'.jobtitle'은 CSS 선택기이며 'jobtitle'은 클래스 (또는 그 일부)입니다. – pguardiario

관련 문제