-1

そのため、Nokogiriを使用してページ上のリンクのリストを循環し、すべてのリンクを2D配列にプッシュしています。nil問題は、それが私が望まないいくつかの要素を押し込んでいるということです。

nilである要素をスキップするように強制するにはどうすればよいですか?配列にはリンクだけがあり、一部のリンクと一部のnil値はありませんか?

コードを参照してください:

url = 'http://www.craigslist.org/about/sites'

def my_list(url)
    root = Nokogiri::HTML(open(url))
    list = root.css("a").map do |link|
        if link[:href] =~ /http/
            [link.text, link[:href]]   
        end        
    end
end

考え?

PS試しましたが、その特定の要素if link[:href].nil?をスキップするように指示する方法がわかりません。link

4

2 に答える 2

1

rootはすべてのコレクションメソッドをサポートしていないようであるため、リストを後処理できます。メソッドの最後でこれを試して、リストをクリーンアップしてください。それはすべてのnilをドロップします。

list = list.reject {|x| x.nil?}
于 2012-04-18T21:58:25.023 に答える
0

あなたが試すことができます:

list = root.css("a").reject!{|l| l[:href].nil?}.map do | link |
于 2012-04-18T21:53:07.027 に答える