2
我正在尋找一些關於爲圖片刮取網站的指針(這可能會超出我目前的技能水平)。我有一個我正在下載的檔案圖像數據庫(請參閱,例如,http://digitarq.dgarq.gov.pt/viewer?id=2300366)。每個項目記錄都有一組TIFF圖像,我可以通過訪問每個記錄的圖像逐一下載(請參閱文檔查看器上的下載按鈕)。使用Ruby刮取圖片數據庫
我希望做的是刮掉項目頁面以找到每個TIFF圖像,並將它們下載到我的本地硬盤以用於研究目的。我想我遇到的困難是我不清楚如何獲取這些下載鏈接。沿左側的TIFF鏈接使用JavaScript來查詢數據庫並拉出新圖像。我發現它很容易的開始刮這些網址:
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
這是第1刮刀我已經寫在那裏,我不得不處理JavaScript和數據庫,所以它證明了一個有趣的挑戰。這看起來像我在正確的軌道上?有沒有更好的圖書館比Nokogiri做這樣的事情?或者,我甚至有可能完成這項工作?
我推薦機械化。它將Nokogiri和HTML包裝成一個更加「類似網頁瀏覽器」的API。 –
如果是出於研究目的,並且如果您在學校,您是不是可以找到聯繫網站所有者的方式,並且可以通過FTP獲得更直接的圖像訪問權限?爲了合法的目的,似乎訪問將被授予。如果沒有,請使用瀏覽器查看頁面,而不啓用JavaScript。每個圖像名稱都在那裏,並且可以通過Nokogiri搜索輕鬆訪問。找出映像目錄的完整路徑,添加映像名稱,並且您應該能夠使用OpenURI訪問它們。 –
機械化會需要一些額外的工作,因爲它不執行JavaScript。您需要解構JavaScript(它只是在發佈表單之前填充了幾個隱藏的表單域),但另一個選擇是使用像Watir或Selenium這樣的瀏覽器驅動程序。 –