使用Ruby刮取图像数据库

时间:2013-06-04 21:52:50

标签: ruby web-scraping nokogiri

我正在寻找关于抓取网站图片的一些指示(可能超出我目前的技能水平)。我有一个我想要下载的档案图像数据库(例如,参见http://digitarq.dgarq.gov.pt/viewer?id=2300366)。每个项目记录都有一系列TIFF图像,我可以通过访问每个记录的图像逐个下载(参见文档查看器上的下载按钮)。

我希望做的是刮取项​​目页面以查找每个TIFF图像并将其下载到我的本地硬盘驱动器以用于研究目的。我认为我遇到的困难是我不太清楚如何获取这些下载链接。左侧的TIFF链接使用JavaScript查询数据库并提取新图像。我发现很容易开始抓取这些网址:

require 'rubygems'
require 'nokogiri'
require 'open-uri'

BASE_URL = "http://digitarq.dgarq.gov.pt"
ITEM_URL = "#{BASE_URL}/viewer?id=2300366"

# Parse the page for items
page = Nokogiri::HTML(open(ITEM_URL))

item_id = "2F2603B150884299A0161DCA31F2CA71"
page_items = page.css('#ViewerControl1_UpdatePanelMain #ViewerControl1_divLeftColumn table')

page_items[1..-2].each do |item|
    hrefs = item.css('td a')
    puts hrefs
end

我认为,下一步是抓取下载按钮,查询数据库中的TIFF图像,然后保存到本地。假设,例如:

def scrape_for_download(archive_item)
    archive_item = Nokogiri::HTML(open(URL)
    download_item = page.css('#ViewerControl1_HyperLinkDownload')
    download_item.each do |download|
        File.open("#{item}", "w") do |output|
            output.puts output.read
        end
    end
end

这是我写的第一个刮刀,我必须处理JavaScript和数据库,因此它证明是一个有趣的挑战。看起来我走在正确的轨道上吗?做这样的事情,是否有比Nokogiri更好的图书馆?或者,我甚至可以做这项工作吗?

1 个答案:

答案 0 :(得分:0)

我们最终使用了Mark Thomas的suggestion Selenium,它的效果非常好。谢谢!