存档

2011年6月 的存档

Java Swing小项目

2011年6月20日 没有评论   

推荐一本学习swing的书《深入浅出Java Swing程序设计》,简单易学!

JDK从1.2版本开始,包含了Swing。简单来说,Swing是为了弥补AWT的某些不足,提升java在图形界面领域的市场而产生的,但是其后来的发展,并不尽如人意。eclipse并没有使用Swing,而是使用了JFace和SWT。

关于Swing更多的起源与基础知识可以看这里
阅读全文…

分类: java 标签: ,

ruby图片抓取

2011年6月3日 没有评论   

谨以此117行代码,来怀念一下我曾经的ruby生活。

这是一个用来抓取图片的脚本

其中F2010MEN.txt和S2011MEN.txt的内容格式为

“/fashionshows/review/S2011MEN-ACNE”,”/fashionshows/review/S2011MEN-AKIMMEL”。。。

[ruby]
require ‘rubygems’
require ‘pp’
require ‘nokogiri’
require ‘open-uri’
require ‘fileutils’
require ‘timeout’

class GetImages
def initialize
@file_names = [‘F2010MEN.txt’,’S2011MEN.txt’]
@api = "http://www.style.com/api/data-streamer?id=empty&out=xml&dsType=slideshow&season=<SEASON>&designCode=<DESIGNCODE>"
@home = "http://www.style.com"
end
def start
@file_names.each do |name|
pages = getpages(name)
pages[0] =~ /([\d\w]+)\-(\w+)/
season = $1 #得到SHOW的名字
bindex = 0
bundle = pages.size-1
FileUtils.mkdir_p("pages/api/#{season}")
pages[bundle * bindex, bundle].each do |p_url|
begin
a_url = ”
# a_uri = ”
if p_url=~/([\d\w]+)\-(\w+)/
a, b = $1, $2
a_url = @api.sub("<SEASON>", a).sub("<DESIGNCODE>", b)
a_uri = "pages/api/#{a}/" + make_uri(a_url)
puts a_url
# puts a_uri

# 1
download_xml(a_url, a_uri)

# 2
download_images_from_api_page(a_uri, a, b)
end
rescue Timeout::Error, Errno::ENOENT
file = open("exception.txt","a")
file.write(Time.now.to_s+"no such file:"+a_url+"\n")
file.close
p_url = ""
retry
end
end
end
end
def getpages(name)
pages = []
brandfile = File.open("menswear\\#{name}") #打开每个品牌的文件
pages = brandfile.read.split(‘,’) #得到pages数组
brandfile.close
return pages
end
def full_path(url)
if url =~ /^http/
url
else
@home + url
end
end
def make_uri(url)
url.gsub(/[\W\=\?\&]/, ‘_’)
end
def download_image(a_url, a_uri)
file = File.open("#{a_uri}","wb")
file.write(open(a_url).read)
file.close
end
def download_xml(a_url, a_uri)
file = File.open("#{a_uri}","w")
file.write(open(a_url).read)
file.close
end
def setreadme(dir,doc)
contents = ["主题: #{doc.css(‘fashion-show’).text}","时间:#{doc.css(‘fashion-show’).attr(‘show_date’)}","城市:#{doc.css(‘slideshow’).attr(‘city’)}","设计师:#{doc.css(‘designer’).text}","内容:#{doc.css(‘body’).text}"]
readme = File.open("#{dir}/README.txt","w")
contents.each do |content|
readme.write(content+"\n")
end
readme.close
end
def download_images_from_api_page(a_uri, a, b)
dir = "images/#{a}/#{b}"
FileUtils.mkdir_p(dir)
f = File.new(a_uri)
doc = Nokogiri::XML(f)
f.close
deru = ""
imagecount = 0
setreadme(dir,doc)
readme = File.open("#{dir}/README.txt","a")
doc.css(‘photo[type="FULL_SCREEN_IMAGE"]’).each do |link|
puts image_url = full_path(link.attr(‘uri’))
if image_url =~ /DETAILS/
deru = "DETAILS_"
else
deru = "RUNWAY_"
end
puts image_uri = dir + ‘/’ + deru + File.basename(image_url)
if File.exists?(image_uri)
puts "We got it!"
else
puts "Downloading…"
download_image(image_url, image_uri)
imagecount+=1
readme.write(image_url+"\n")
end
end
readme.write("图片总数: #{imagecount}")
readme.close
end
end

get_images = GetImages.new
get_images.start
[/ruby]

分类: ruby 标签: