2012-04-18 29 views
0

我是一個總的小白,但我試圖下載使用維卡斯從wallpaperswide.com 壁紙Ruby腳本在以下頁面發現: http://vikas-reddy.blogspot.in/search/label/download通過維卡斯從wallpaperswide.com下載腳本

我運行Windows 7 64位和已經下載並安裝了以下 之前運行腳本:

ruby​​installer-1.9.3-p125.exe

的wget-1.11.4-1-SETUP.EXE

nokogiri從How to use nokogiri from Jruby on Windows?

我沒有安裝「open-uri」,雖然我不知道該怎麼做。

我複製了腳本,並將其保存爲txt文件,並改變了擴展.RB和 跑了文件,但會出現在命令提示符窗口中出現以下錯誤信息: 該命令的語法不正確。

請提供詳細的幫助。謝謝。

的腳本如下:

#!/usr/bin/env ruby 
# 
# Vikas Reddy 
# 
# A little script to download ALL the wallpapers of a given 
# resolution from http://www.wallpaperswide.com/ 
# 
# Requirements 
# ============ 
# Ruby Version: 1.9.2 
# Gems: nokogiri, open-uri 
# Other programs: wget 
# 
# 
# Available Resolutions 
# ===================== 
# 
# Wide 
# 
# * 16:10 960x600 
# * 16:10 1152x720 
# * 16:10 1280x800 
# * 16:10 1440x900 
# * 16:10 1680x1050 
# * 16:10 1920x1200 
# * 16:10 2560x1600 
# * 16:10 3840x2400 
# * 16:10 5120x3200 
# * 5:3 800x480 
# * 5:3 1280x768 
# 
# HD 
# 
# * 16:9 960x540 
# * 16:9 1024x576 
# * 16:9 1280x720 
# * 16:9 1366x768 
# * 16:9 1600x900 
# * 16:9 1920x1080 
# * 16:9 2048x1152 
# * 16:9 2400x1350 
# * 16:9 2560x1440 
# * 16:9 3554x1999 
# * 16:9 3840x2160 
# 
# Standard 
# 
# * 4:3 800x600 
# * 4:3 1024x768 
# * 4:3 1152x864 
# * 4:3 1280x960 
# * 4:3 1400x1050 
# * 4:3 1440x1080 
# * 4:3 1600x1200 
# * 4:3 1680x1260 
# * 4:3 1920x1440 
# * 4:3 2048x1536 
# * 4:3 2560x1920 
# * 4:3 2800x2100 
# * 4:3 3200x2400 
# * 4:3 4096x3072 
# * 5:4 1280x1024 
# * 5:4 2560x2048 
# * 5:4 3750x3000 
# 
# Mobile Ratio 
# 
# * VGA 240x320 
# * VGA 480x640 
# * VGA 320x240 
# * VGA 640x480 
# * WVGA 240x400 
# * WVGA 480x800 
# * WVGA 400x240 
# * WVGA 800x480 
# * HVGA 320x480 
# * HVGA 480x320 
# * HVGA 640x960 
# * HVGA 960x640 
# * iPad 1024x768 
# * iPad 768x1024 
# * HD 16:9 480x272 
# * HD 16:9 272x480 
# * Phone 176x220 
# * Phone 220x176 
# 
# Dual 
# 
# * 4:3 1600x600 
# * 4:3 2048x768 
# * 4:3 2304x864 
# * 4:3 2560x960 
# * 4:3 2800x1050 
# * 4:3 2880x1080 
# * 4:3 3200x1200 
# * 4:3 3360x1260 
# * 4:3 3840x1440 
# * 4:3 4096x1536 
# * 4:3 5120x1920 
# * 4:3 5600x2100 
# * 4:3 6400x2400 
# * 4:3 8192x3072 
# * 5:4 2560x1024 
# * 5:4 5120x2048 
# * 5:4 7500x3000 
# * 5:4 10240x4096 
# * 16:10 1920x600 
# * 16:10 2304x720 
# * 16:10 2560x800 
# * 16:10 2880x900 
# * 16:10 3360x1050 
# * 16:10 3840x1200 
# * 16:10 5120x1600 
# * 16:10 7680x2400 
# * 16:10 10240x3200 
# * 5:3 1600x480 
# * 5:3 2560x768 
# * 16:9 1920x540 
# * 16:9 2048x576 
# * 16:9 2560x720 
# * 16:9 3200x900 
# * 16:9 3840x1080 
# * 16:9 4096x1152 
# * 16:9 4800x1350 
# * 16:9 5120x1440 
# * 16:9 7108x2000 
# * 16:9 7680x2160 
# * 3:2 2880x960 
# * 3:2 4000x1333 
# * 3:2 2304x768 
# 
# Other 
# 
# * 3:2 1152x768 
# * 3:2 1440x960 
# * 3:2 2000x1333 


require 'open-uri' 
require 'nokogiri' 

Resolution = "1600x900" 
Base_URL = "http://wallpaperswide.com/#{Resolution}-wallpapers-r/page/" 
Output_Directory = "/home/vikas/Wallpapers/" 

# Create the Output_Directory if needed 
`mkdir -p "#{Output_Directory}"` 

(1..2492).each do |page_num| 

# Go page by page 
url = Base_URL + page_num.to_s 

# Parse html 
f = open(url) 
doc = Nokogiri::HTML(f) 

# Loop over image-boxes 
doc.css("div.thumb").each do |wallp| 

# Extract wallpaper subpage url 
wallp.css("div[onclick]").attr("onclick").value =~ /prevframe_show\('(.*)'\)/ 
subpage_url = $1 
subpage_url =~ %r|http://wallpaperswide\.com/[^/]+/([\w\d]+)\.html| 

# Generate url of the required wallpaper 
wallp_url = %|http://wallpaperswide.com/download/#{$1}-#{Resolution}.jpg| 

# Download... with a user-agent parameter just in case... 
# use '--limit-rate=100k' to limit download speed 
`wget -c -U "Firefox/4.5.6" -P "#{Output_Directory}" "#{wallp_url}"` 
end 
end 
+0

我覺得因爲它需要 需要「開URI」 – 2012-04-18 06:12:23

+0

它炮擊了對Linux命令,你需要打開-URI出於一些奇怪的原因,所以除非你從cygwin運行它,否則不起作用。 – pguardiario 2012-04-18 07:41:22

回答

0

您需要將所需的兩種寶石。 open-uri是標準庫的一部分,所以你不需要安裝它,但nokogiri不是。安裝它,如下所示

gem install nokogiri 

炮擊創建德地圖,做下載與wget的能更好地通過Ruby代碼來代替,如果你尋找一些例子,但它們應該在Windows工作應該不難。您將需要確保wget的是路徑或用命令如給道路

`"c:/program files/wget/wget.exe" -c -U "Firefox/4.5.6" -P "#{Output_Directory}" "#{wallp_url}"` 

編輯: 首先嚐試這種

Output_Directory = "c:\temp" 
Resolution = "1600x900" 
wallp_url = %|http://wallpaperswide.com/download/#{$1}-#{Resolution}.jpg| 
command = %|"C:/Program Files (x86)/GnuWin32/bin/wget.exe" -c -U "Firefox/4.5.6" -P "#{Output_Directory}" "#{wallp_url}"| 
puts command 

#=> "C:/Program Files (x86)/GnuWin32/bin/wget.exe" -c -U "Firefox/4.5.6" -P "c: emp" "http://wallpaperswide.com/download/-1600x900.jpg" 

你不應該得到一個錯誤。注意正斜線。 然後,通過將命令粘貼到命令行來運行放置在控制檯中的命令。 如果您遇到錯誤,那麼您的路徑或firefox參數有問題。 只有wget有效(你在c:\ temp地圖中有圖像),你的腳本才能工作。 在你的素文字,你可以運行這樣的命令:

`command` 

如果仍腳本錯誤,在這裏發佈的錯誤。

+0

我用C:\ Program Files(x86)\ GnuWin32 \ bin \替換了'wget -c -U「Firefox/4.5.6」-P「#{Output_Directory}」「#{wallp_url} wget,exe「-c -U」Firefox/4.5.6「-P」#{Output_Directory}「」#{wallp_url}「'但出現同樣的錯誤。請幫忙。 – 2012-04-18 14:48:48

+0

看到我上面的編輯 – peter 2012-04-18 15:11:56

0

你可以註釋掉的代碼「wget的」線,並把它的位置一放聲明是這樣的:

# `wget -c -U "Firefox/4.5.6" -P "#{Output_Directory}" "#{wallp_url}"` 
puts "#{wallp_url}" 

這將網址生成的輸出。理想情況下,應該連續不斷地吐出十個網址。如果發生這種情況,那麼問題肯定可能是由於Windows中的wget安裝或其使用情況。

這段代碼中唯一依賴於平臺的代碼就是這樣。 我已經寫了詳細的程序應遵循在我的最新博客文章Windows系統,在http://vikas-reddy.blogspot.in/2012/06/wallpaperswide-download-script-in.html