Ruby 以「程式設計師最好的朋友」著稱,語法自然、標準庫豐富。本文記錄 Windows 下安裝 Ruby、推薦 IDE (EasyEclipse for Ruby/Rails)、並以淘寶商品列表圖片批量下載為例,展示不足百行代碼完成「分頁遍歷 + 正則提取圖片 URL + 多執行緒下載」的強大表達力。
util.rb)
require 'net/http'
require 'open-uri'
# 獲取網頁原始碼
def query_url(url)
Net::HTTP.get(URI.parse(url))
end
# 下載檔案至指定目錄
def save_url(url, dir, filename = nil)
filename ||= url[url.rindex('/')+1..-1] # 取 URL 最後段作檔名
Dir.mkdir(dir) unless File.exist?(dir) # 確保目錄存在
open(url) do |fin|
File.open(File.join(dir, filename), "wb") do |fout|
while chunk = fin.read(1024)
fout.write(chunk)
end
end
end
end
require_relative 'util'
start_url = 'https://list.mall.taobao.com/1424/g-d-----40-0--1424.htm'
while start_url && !start_url.empty?
puts "開始下載頁面: #{start_url}"
content = query_url(start_url)
# 1. 提取下一頁連結
next_page = content.scan(/下一頁<\/span><\/a>/)
start_url = (next_page[0] && next_page[0][0]) ? next_page[0][0] : nil
# 2. 提取所有圖片 URL (img.src 以 https://img[數字]. 開頭)
imgs = content.scan(/
/)
imgs.each do |img_arr|
url = img_arr[0]
save_url(url, "d:\\mall\\")
print "." # 進度指示
end
puts
# break # 測試時可取消註解僅跑第一頁
end
puts "全部下載完成!"