我正在寻找一些关于抓取图像网站的指示(这可能超出我目前的技能水平)。我有一个要下载的档案图像数据库(参见,例如,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 更好的图书馆来做这样的事情?或者,我什至有可能完成这项工作吗?