2013-01-09 90 views
0

我正在開發第三方應用程序,我只能查看網頁源內容。並且從那裏我只能收集一些href內容值,其格式爲/aems/file/filegetrevision.do?fileEntityId。可能嗎?HREF值通過網頁使用Ruby進行搜索

HTML * (HTML的部分) *

<td width="50%"> 
<a href="/aems/file/filegetrevision.do?fileEntityId=10597525&cs=9b7sjueBiWLBEMj2ZU4I6fyQoPv-g0NLY9ETqP0gWk4.xyz"> 
screenshot.doc 
</a> 
</td> 
+0

看看[Nokogiri](http://nokogiri.org/)。你可以解析文檔只有符合所需模式的'href' –

回答

2

輕鬆:

require 'nokogiri' 

html = ' 
<td width="50%"> 
<a href="/aems/file/filegetrevision.do?fileEntityId=10597525&cs=9b7sjueBiWLBEMj2ZU4I6fyQoPv-g0NLY9ETqP0gWk4.xyz"> 
screenshot.doc 
</a> 
</td> 
' 

doc = Nokogiri::HTML(html) 
doc.search('a[href]').map{ |a| a['href'] } 

將返回:

[ 
    [0] "/aems/file/filegetrevision.do?fileEntityId=10597525&cs=9b7sjueBiWLBEMj2ZU4I6fyQoPv-g0NLY9ETqP0gWk4.xyz" 
] 

如果はNT來篩選路徑相匹配,使用類似:

pattern = Regexp.escape('/aems/file/filegetrevision.do?fileEntityId') 
doc.search('a[href]').map{ |a| a['href'] }.select{ |href| href[ %r[^#{ pattern }] ] } 

這又返回:

[ 
    [0] "/aems/file/filegetrevision.do?fileEntityId=10597525&cs=9b7sjueBiWLBEMj2ZU4I6fyQoPv-g0NLY9ETqP0gWk4.xyz" 
] 

這個代碼將從所有<a>標籤與href文檔中返回href參數。在第二個示例中,它將通過路徑過濾它們。

+0

這裏我只是粘貼了一部分'HTML',但在當前場景中,我必須將'URL'傳遞到瀏覽器,然後從那個網頁我必須收集'href'這樣的值。在這種情況下,我應該如何構建您的程序? –

+1

當你打算實施所提出的解決方案時,你需要編寫你的問題,而不是部分地問它然後改變它。原因是,您的額外評論沒有意義,您需要重新解釋原始問題以澄清問題,並解釋您需要如何工作。並且展示你的工作。 –

+0

對不起!我去做。 –

1
require 'open-uri' 
source='http://www.example.com' 
page = open(source).read 
URI.extract(page,/.*\/aems\/file\/filegetrevision.do?fileEntityId=.*/) 
+0

'+ 1'爲您對我的帖子感興趣。我需要爲該@alex安裝哪些包? –

+0

該功能是你不需要安裝任何東西。 OpenURI是標準紅寶石庫的一部分。 – alex