2013-06-04 3 views
2

Я ищу некоторые указатели на очистку веб-сайта для изображений (которые могут выходить за пределы моего текущего уровня квалификации). У меня есть база данных архивных изображений, которые я ищу для загрузки (см., Например, http://digitarq.dgarq.gov.pt/viewer?id=2300366). С каждой записью элемента есть коллекция изображений TIFF, которую я мог бы скачать один за другим, посетив каждый из изображений записи (см. Кнопку загрузки в средстве просмотра документов).Скребок базы данных изображений с Ruby

Что я надеялся сделать, это очистить страницу товара, чтобы найти каждый образ 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 и баз данных, так что это доказывает интересный вызов. Кажется, я на правильном пути? Есть ли лучшие библиотеки, кроме Нокигири, для чего-то подобного? Или, возможно ли это сделать для меня?

+1

Я рекомендую механизировать. Он завершает Nokogiri и HTML в аккуратный пакет с более «похожим на веб-браузер» API. –

+1

Вместо того, чтобы соскабливать, если это для исследовательских целей, и если вы в школе, не можете ли вы найти способ связаться с владельцами сайта и получить более прямой доступ к изображениям, возможно, через FTP? Для законной цели кажется, что доступ будет предоставлен. Если нет, просмотрите страницу с помощью браузера без включенного JavaScript. Каждое имя изображения находится прямо там и легко доступно через поиски Nokogiri. Выясните полный путь к каталогу изображений, добавьте это имя изображения, и вы сможете получить доступ к ним с помощью OpenURI. –

+1

Механизму потребуется немного дополнительной работы, так как он не выполняет JavaScript. Вам нужно будет деконструировать JavaScript (он просто заполняет пару скрытых полей формы перед отправкой формы), но другой вариант - использовать драйвер браузера, такой как Watir или Selenium. –

ответ

0

Мы закончили использование Марка Томаса suggestion Селена, которая прекрасно работает. Благодаря!

Смежные вопросы