2014-08-28 1 views
0

HTML 테이블의 특정 행에있는 링크를 처리하려고합니다.Mechanize in Rails를 사용하여 셀의 값을 기반으로 링크를 찾아서 작동합니다.

테이블에는 링크 역할을하는 도시 이름의 날짜와 열에 대한 열이 있습니다. 특정 날짜의 행을 찾은 다음 동일한 행의 다음 셀에서 발견 된 링크를 차례로 순환해야합니다.

내가 이전 페이지에서 기계화와 대상 페이지에 도달 (페이지에 링크가 이렇게 직접 링크 할 수없는 이전 페이지 생성된다) 나는이와 상기 테이블을 선택할 수 있어요 :

agent.page.search("//table[@class='calendar']") 

을 그러나 그 후, Date-column에있는 날짜를 기준으로 올바른 행을 선택하고 각 링크를 차례로 클릭하는 방법 (그리고 자연스럽게 다음 도시로 이동하기 전에 물건을 처리하는 방법)을 놓치고 있습니다.

편집이 좀 진전을 할 수 있었다. 정확한 행에 정확한 셀의 내용을 가져올 수있게되었습니다. IF 날짜를 하드 코드합니다. 그러나 하드 코딩 된 날짜 대신 변수를 사용하는 방법을 알아낼 수 없으며 단지 코드를 사용하는 방법을 찾아야합니다. 날짜를 입력하고 거기에 텍스트로 평일을 포함하지 마십시오.

agent.page.search("//table[@class='calendar']/tbody/tr/td[@class='date'] 
    [text()='wed 27.8.2014']/following-sibling::td[1]/ul/li") 

예 HTML은 아래 :

<table class="calendar"> 
    <tr> 
     <th>Date</th> 
     <th>City</th> 
    </tr> 
<tr class="odd"> 
    <td class="date">thu 28.8.2014</td> 
    <td class="city"> 
     <ul> 
      <li><a href="">London</a></li> 
      <li><a href="">Paris</a></li> 
      <li><a href="">Berlin</a></li> 
     </ul> 
    </td> 
</tr> 
<tr class="even"> 
    <td class="date">wed 27.8.2014</td> 
      <td class="city"> 
     <ul> 
      <li><a href="">London</a></li> 
      <li><a href="">Paris</a></li> 
      <li><a href="">Berlin</a></li> 
     </ul> 
    </td> 
</table> 

모든 도움이 크게 감사합니다!

답변

0

추가 연구를 통해 내 자신을 찾을 수있었습니다. 대단히 도움이되는 것은이 질문과 대답이었습니다. Nokogiri에서 부분 일치에 관한 Nokogiri: How to select nodes by matching text?.

다음 스 니펫은 현재 저에게 효과가 있으며 계속 진행할 수 있습니다.

date = Date.new(2014,8,27) 

agent.page.search("//table[@class='calendar']/tbody/tr/td[@class='date'] 
[contains(text(), 
\"#{date.strftime("%e.%-m.%Y")}\")]/following-sibling::td[1]/ul/li") 
관련 문제