2011-02-04 8 views
2

Webページからのリンクやダウンロードファイルを抽出するために、私はここで私がやりたい事はしている私のアプリケーション内のWebページへのリンクを指定しますWebクローラーが、私はRoRのを使用してい

(1 )私は、Webページ内のすべてのリンクを抽出したい

彼らはpdfファイル(基本的にパターンマッチ)へのリンクがある場合(2)検索

(3)私は(リンクでPDFをファイルをダウンロードしたいです私のシステムに保存することができます。

私はアネモネを使用してみましたが、それは私のニーズをオーバーシュートしても、どのように私は、対応するリンク内のファイルをダウンロードしないWebサイト全体をクロール?

乾杯

答えて

8

を使用することができますファイルをダウンロードするには

Nokogiri aswellを見てください。

require 'nokogiri' 
require 'open-uri' 
doc = Nokogiri::HTML(open('http://www.thatwebsite.com/downloads')) 

doc.css('a').each do |link| 
    if link['href'] =~ /\b.+.pdf/ 
    begin 
     File.open('filename_to_save_to.pdf', 'wb') do |file| 
     downloaded_file = open(link['href']) 
     file.write(downloaded_file.read()) 
     end 
    rescue => ex 
     puts "Something went wrong...." 
    end 
    end 
end 

あなたはキャッチいくつかのより良い例外をしたいかもしれませんが、私はあなたのアイデア:)

+0

を読み込むことができません個人的なプロジェクト。ありがとう! – lyonsinbeta

1

あなたはscrapiを試みたことがありますか?あなたはCSSセレクターでページを掻き集めることができます。

ライアンベイツもそれについてscreencastを作りました。あなたはopen-uri

require 'open-uri' 
url = "http://example.com/document.pdf" 
file = open(url) 
c = file.read() 
+0

を取得しかし、私は、私はルビー1.8.7を使用しています、「scrapi」を使用して問題があると思います。それは言うスクレーパー::リーダー:: HTMLParseError:これは私が小さなを行う探していたものばかりである/Library/Ruby/Gems/1.8/gems/scrapi-1.2.0/lib/tidy/libtidy.dylib – theReverseFlick

関連する問題