2011-02-04 113 views
2

我使用的是回报率从网页上的链接和下载文件,我将指定一个链接到我的应用程序中的网页,这里是我想要做的事情网络爬虫提取

(1 )我想提取网页中的所有链接

(2)求,如果他们是链接到PDF文件(基本上是一个模式匹配)

(3)我要下载文件的链接(PDF格式例如)并将它们存储在我的系统中。

我尝试过使用银莲花,但它抓取整个网站超过我的需要,也如何下载文件在相应的链接?

干杯

回答

8

看一看Nokogiri以及。

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 2012-08-02 03:18:49

1

您试过scrapi?你可以用CSS选择器来刮页面。

瑞安贝茨也做了一个screencast关于它。

要下载的文件,你可以使用open-uri

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

但我使用,我使用Ruby 1.8.7“scrapi”的麻烦。它说Scraper :: Reader :: HTMLParseError:无法加载/Library/Ruby/Gems/1.8/gems/scrapi-1.2.0/lib/tidy/libtidy.dylib – theReverseFlick 2011-02-04 12:41:42