2

Anemoneを使用してドメインをスパイダーしていますが、正常に動作します。

クロールを開始するコードは次のようになります。

require 'anemone'

Anemone.crawl("http://www.example.com/") do |anemone|
  anemone.on_every_page do |page|
      puts page.url
  end
end

これは、次のようにドメインのすべてのページ URL を非常にうまく出力します。

http://www.example.com/
http://www.example.com/about
http://www.example.com/articles
http://www.example.com/articles/article_01
http://www.example.com/contact

私がやりたいことは、キーの URL の最後の部分と、値の URL「ドメインを引いたもの」を使用して、キーと値のペアの配列を作成することです。

例えば

[
   ['','/'],
   ['about','/about'],
   ['articles','/articles'],
   ['article_01','/articles/article_01']
]

これが初歩的なものである場合は申し訳ありませんが、私はRuby初心者です。

4

2 に答える 2

2

最初にコード ブロックの外側で配列またはハッシュを定義し、次にキーと値のペアを追加します。

require 'anemone'

path_array = []
crawl_url = "http://www.example.com/"    

Anemone.crawl(crawl_url) do |anemone|
  anemone.on_every_page do |page|
    path_array << page.url
    puts page.url
  end
end

ここから、配列を使用可能な多次元配列に .map できます。

path_array.map{|x| [x[crawl_url.length..10000], x.gsub("http://www.example.com","")]}

=> [["", "/"], ["about", "/about"], ["articles", "/articles"], ["articles/article_01", "/articles/article_01"], ["contact", "/contact"]] 

すべてのシナリオで機能するかどうかはわかりませんが、データを収集して操作するための良いスタートを切ることができると思います. また、キーと値のペアが必要な場合は、Ruby でハッシュを使用および作成する方法の詳細について、 Ruby のクラスHashを調べる必要があります。

于 2013-10-23T12:33:46.077 に答える
0

これを行うための最も簡単で、おそらく最も堅牢でない方法は、

page.url.split('/').last

あなたの「鍵」を取得します。確実に機能することを確認するには、さまざまなエッジ ケースをテストする必要があります。

編集: これは、' http://www.example.com/ 'のキーとして 'www.example.com' を返しますが、これは必要な結果ではありません

于 2013-10-23T11:59:28.783 に答える