ruby - 使用 Ruby 抓取图像数据库

标签 ruby web-scraping nokogiri

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

最佳答案

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

关于ruby - 使用 Ruby 抓取图像数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16928150/

相关文章:

python - 如何使用 bs4 在 python 中抓取单页应用程序网站

ruby-on-rails - 使用 Nokogiri 将 XML 提要解析为 Ruby 对象?

ruby - 是否可以使用 Rspec 为无限循环问题编写规范?,Ruby

go - Chromedp 包 : How to get updated HTML source of the webpage which has dynamically loaded contents by using chromedp

python - python 网络抓取期间索引超出范围错误(漂亮的汤)

ruby-on-rails - LoadError : incompatible library version -/home/ubuntu/. rvm/gems/ruby-2.3.1@lm5/gems/nokogiri-1.8.2/lib/nokogiri/nokogiri.so

ruby - 抓取网页时如何提取 html 转义字符/实体作为文本? ( ruby 和 nokogiri)

ruby - 在 ruby​​ 中创建比特币地址

ruby - 用 ruby 休息?

ruby - 无法启动黎曼健康状况