ruby批量下载网上的素材库[tubaba.com网页矢量图标]

由 water 于 周二, 05/22/2007 - 22:04 提交。
采用ruby和hpricot库,逻辑步骤如下:
  1. 分析网页结构
  2. 采用open-uri打开网页,打开时注意完整的Referer,否则tubaba.com将认为盗链
  3. 将得到的页面html返回给hpricot
  4. 由hpricot定位要下载的.rar文件
  5. 调用shell程序wget下载.rar文件到指定位置,注意指定Referer
  6. 调用shell程序unrar解压,用-p指定密码解压
  7. 延时若干继续下载下一个.rar文件
程序在ubuntu 7.04中运行通过,源代码如下:
Download Code: downfromnet.rb
  1. #!/usr/bin/ruby
  2.  
  3. require "hpricot"
  4. require "open-uri"
  5.  
  6. i = 1
  7. doc = Hpricot(open("http://www.tubaba.com/picture/2006/0831/image_140.html",
  8.           "User-Agent" => "Internet Explorer 6.0",
  9.           "From" => "myals@gmail.com",
  10.           "Referer" => "http://www.tubaba.com/picture/2006/0831/image_140.html"))
  11. doc.search("table/tbody/tr/td/a").each do |link|
  12.     if link.attributes['href'].include?".rar"
  13.         system "wget http://www.tubaba.com" + link.attributes['href'] + ' --referer=http://www.tubaba.com' + link.attributes['href'] + " -O /tmp/a/1.rar"
  14.         system "unrar x -ptubaba.com /tmp/a/1.rar /home/water/share/网页矢量图标"
  15.     end
  16. end
  17.  
  18. while(i < 53)
  19.     i = i + 1
  20.     url = "http://www.tubaba.com/picture/2006/0831/image_140_" + i.to_s + ".html"
  21.     puts '正在分析' + url + ' ...'
  22.     doc = Hpricot(open(url,
  23.           "User-Agent" => "Internet Explorer 6.0",
  24.           "From" => "myals@gmail.com",
  25.           "Referer" => url))
  26.     doc.search("table/tbody/tr/td/a").each do |link|
  27.         if link.attributes['href'].include?".rar"
  28.             system "wget http://www.tubaba.com" + link.attributes['href'] + ' --referer=http://www.tubaba.com' + link.attributes['href'] + " -O /tmp/a/" + i.to_s + ".rar"
  29.             system "unrar x -ptubaba.com /tmp/a/" + i.to_s + ".rar /home/water/share/网页矢量图标"
  30.         end
  31.     end
  32.     sleep 2
  33. end

发表新评论

此内容将保密,不会被其他人看见。
  • 网页地址和电子邮件地址将会被自动转换为链接。
  • 允许的 HTML 标签: <img> <p> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <coolcode>
  • You can use coolfilter tags in the text, to include code and media

更多格式化选项信息