2012-11-09 50 views
0

我試圖改進這種方法來搜索演員維基頁面並將其所有的電影鏈接。目前,我正在使用nokogiri解析頁面和正則表達式來檢索標題中包含單詞「(電影)」的所有鏈接,但仍然錯過了我需要的大多數鏈接。有沒有人有建議檢索更多相關鏈接?改進正則表達式方法

def find_films_by_actor(doca, out = []) 
     puts "Entering find_films_by_actor with #{find_name_title(doca)}." 
     all_links = doca.search('//a[@href]') 
     all_links.each do |link| 
      link_info = link['href'] 
      if link_info.include?("(film)") && !(link_info.include?("Category:") || link_info.include?("php")) 
       then out << link_info end 
      end 
     out.uniq.collect {|link| strip_out_name(link)} 
    end 
+0

維基通常只使用t他(電影)後綴,當有另一種類型的媒體同名時,就像一本基於它的書或它是一個常見的短語,所以你會錯過很多「原創」的標題。 – siame

+0

是的,這是真的,但僅限於用戶的眼睛。如果您查看維基頁面來源,您會看到一些(不是全部)演員電影都附有(電影)標籤。我只是試圖設計一種找到這些沒有電影標籤的鏈接 – shanahobo86

+0

等待,是(電影)是在標題屬性,文本或href – pguardiario

回答

1

我覺得很乾淨,以獲得在鏈接你想用CSS:

links = doc.search 'a[title*="(film)"]' 

你甚至可以做節點集數學來縮小範圍:

links -= doc.search 'a[title*=foo]' 

要獲得唯一的名稱(來自文本):

links.map(&:text).uniq 
+0

非常感謝您的幫助! – shanahobo86