Я ищу некоторые указатели на очистку веб-сайта для изображений (которые могут выходить за пределы моего текущего уровня квалификации). У меня есть база данных архивных изображений, которые я ищу для загрузки (см., Например, 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 и баз данных, так что это доказывает интересный вызов. Кажется, я на правильном пути? Есть ли лучшие библиотеки, кроме Нокигири, для чего-то подобного? Или, возможно ли это сделать для меня?
Я рекомендую механизировать. Он завершает Nokogiri и HTML в аккуратный пакет с более «похожим на веб-браузер» API. –
Вместо того, чтобы соскабливать, если это для исследовательских целей, и если вы в школе, не можете ли вы найти способ связаться с владельцами сайта и получить более прямой доступ к изображениям, возможно, через FTP? Для законной цели кажется, что доступ будет предоставлен. Если нет, просмотрите страницу с помощью браузера без включенного JavaScript. Каждое имя изображения находится прямо там и легко доступно через поиски Nokogiri. Выясните полный путь к каталогу изображений, добавьте это имя изображения, и вы сможете получить доступ к ним с помощью OpenURI. –
Механизму потребуется немного дополнительной работы, так как он не выполняет JavaScript. Вам нужно будет деконструировать JavaScript (он просто заполняет пару скрытых полей формы перед отправкой формы), но другой вариант - использовать драйвер браузера, такой как Watir или Selenium. –