2012-07-23 35 views
2

我使用nokogiri作爲我的HTML解析器。想使用nokogiri解析紅寶石軌道上的href

<html> 
<body> 
<form> 
<table> 
    <tr><td>Some Text</td></tr> 
    <tr> 
     <td colspan="2" align="center"> 
      <br /> 
      <a href="TransportRoom?servlet=CaseSearch.jsp&amp;advancedSearch=Advanced"> 
       Advanced Search 
      </a> 
      <br /> 
      &nbsp; 
     </td> 
    </tr> 
</table> 
</form> 
</body> 
</html> 

在這個html代碼中,我想解析「高級搜索」鏈接。這個html被保存在變量名爲doc1

任何人都可以幫助我嗎?

+0

?你有什麼嘗試? – 2012-07-23 16:24:38

回答

1

第一個答案是爲我工作,但如果有鏈接n個比我們可以通過這種方式操縱它

html = Nokogiri::HTML(doc1) 

html.css("a").each do |element| 
     if (element.text.strip == 'Advanced Search') 
     advance_search_link = element.attr('href') 
     end 
    end 
3

應儘可能簡單

doc = Nokogiri::HTML(doc1) 
href = doc.css("a").first.attr('href') 

這是你想要的嗎?

+0

它會捕獲第一個鏈接,但通過操縱我得到了我的結果謝謝mosch – SSP 2012-07-27 06:16:17

1

我會做如下:你想幹什麼輸出

require 'nokogiri' 

@doc = Nokogiri.HTML <<-eotl 
<html> 
<body> 
<form> 
<table> 
    <tr><td>Some Text</td></tr> 
    <tr> 
     <td colspan="2" align="center"> 
      <br /> 
      <a href="TransportRoom?servlet=CaseSearch.jsp&amp;advancedSearch=Advanced"> 
       Advanced Search 
      </a> 
      <br /> 
      &nbsp; 
     </td> 
    </tr> 
</table> 
</form> 
</body> 
</html> 
eotl 

@doc.at_xpath("//a[normalize-space(.)='Advanced Search']")['href'] 
# => "TransportRoom?servlet=CaseSearch.jsp&advancedSearch=Advanced"