2

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

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

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 更好的图书馆来做这样的事情?或者,我什至有可能完成这项工作吗?

4

1 回答 1

0

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

于 2013-06-20T16:19:24.603 回答