Skip to content

Instantly share code, notes, and snippets.

@uu59
Created February 25, 2011 14:11
Show Gist options
  • Save uu59/843832 to your computer and use it in GitHub Desktop.
Save uu59/843832 to your computer and use it in GitHub Desktop.
# -- coding: utf-8
=begin
$ ruby checkurl.rb "http://www.yahoo.co.jp/"
301 http://www.yahoo.co.jp/s/88883
301 http://www.yahoo.co.jp/r/c1
301 http://www.yahoo.co.jp/r/c5
301 http://www.yahoo.co.jp/r/c12
301 http://www.yahoo.co.jp/s/88793
301 http://www.yahoo.co.jp/r/c2
301 http://www.yahoo.co.jp/r/c15
301 http://www.yahoo.co.jp/r/c53
301 http://www.yahoo.co.jp/r/c13
301 http://www.yahoo.co.jp/r/c33
301 http://www.yahoo.co.jp/r/c34
301 http://www.yahoo.co.jp/r/c41
301 http://www.yahoo.co.jp/r/c48
301 http://www.yahoo.co.jp/r/c57
301 http://www.yahoo.co.jp/r/c44
301 http://www.yahoo.co.jp/r/c18
301 http://www.yahoo.co.jp/r/c21
301 http://www.yahoo.co.jp/r/c26
301 http://www.yahoo.co.jp/s/87488
301 http://www.yahoo.co.jp/r/c73
301 http://www.yahoo.co.jp/r/c37
301 http://www.yahoo.co.jp/r/ttl
302 http://www.yahoo.co.jp/f/topics/top_table/4/*-http:/dailynews.yahoo.co.jp/fc/domestic/sex_offense/?1298640105
301 http://www.yahoo.co.jp/r/mht
301 http://www.yahoo.co.jp/r/c17
302 http://www.yahoo.co.jp/f/topics/top_table/5/*-http:/dailynews.yahoo.co.jp/fc/world/libya/?1298638282
302 http://www.yahoo.co.jp/f/topics/top_table/6/*-http:/dailynews.yahoo.co.jp/fc/economy/publishing_depression/?1298640105
302 http://www.yahoo.co.jp/z/3337_7
302 http://www.yahoo.co.jp/z/3337_9
301 http://www.yahoo.co.jp/r/lst
302 http://www.yahoo.co.jp/z/3337_5
302 http://www.yahoo.co.jp/z/3337_8
301 http://www.yahoo.co.jp/r/pl1
302 http://www.yahoo.co.jp/f/topics/top_table/1/*-http:/dailynews.yahoo.co.jp/fc/world/christchurch_nz_eq/?1298636333
302 http://www.yahoo.co.jp/f/topics/top_table/2/*-http:/dailynews.yahoo.co.jp/fc/domestic/annuity/?1298642041
301 http://www.yahoo.co.jp/r/rev
302 http://www.yahoo.co.jp/z/3337_3
301 http://www.yahoo.co.jp/s/88884
301 http://www.yahoo.co.jp/r/pbk
301 http://www.yahoo.co.jp/r/c25
301 http://www.yahoo.co.jp/r/pet
301 http://www.yahoo.co.jp/r/plpb
301 http://www.yahoo.co.jp/r/c14
302 http://www.yahoo.co.jp/f/topics/top_table/11/*-http:/backnumber.dailynews.yahoo.co.jp/?t=d&d=20110225&c=top
301 http://www.yahoo.co.jp/r/pmllo
301 http://www.yahoo.co.jp/r/pnp
301 http://www.yahoo.co.jp/r/pbc
301 http://www.yahoo.co.jp/r/pclplo
301 http://www.yahoo.co.jp/r/plh1
302 http://www.yahoo.co.jp/f/topics/top_table/7/*-http:/dailynews.yahoo.co.jp/fc/sports/fighters/?1298642041
302 http://www.yahoo.co.jp/z/3337_4
301 http://www.yahoo.co.jp/s/61752
302 http://www.yahoo.co.jp/z/3337_1
301 http://www.yahoo.co.jp/s/88890
301 http://www.yahoo.co.jp/r/lbb
301 http://www.yahoo.co.jp/s/84369
301 http://www.yahoo.co.jp/r/c46
302 http://www.yahoo.co.jp/z/3337_6
301 http://www.yahoo.co.jp/r/ppml
301 http://www.yahoo.co.jp/s/88893
301 http://www.yahoo.co.jp/s/88787
301 http://www.yahoo.co.jp/r/lrn
302 http://www.yahoo.co.jp/f/topics/top_table/10/*-http:/dailynews.yahoo.co.jp/photograph/pickup/?1298636768
301 http://www.yahoo.co.jp/r/rpro
301 http://www.yahoo.co.jp/s/88888
301 http://www.yahoo.co.jp/r/lnxt
301 http://www.yahoo.co.jp/r/msb
301 http://www.yahoo.co.jp/s/88895
301 http://www.yahoo.co.jp/r/labt
301 http://www.yahoo.co.jp/s/88896
301 http://www.yahoo.co.jp/r/par
301 http://www.yahoo.co.jp/s/88894
301 http://www.yahoo.co.jp/s/88946
301 http://www.yahoo.co.jp/s/88388
301 http://www.yahoo.co.jp/r/lbz
301 http://www.yahoo.co.jp/s/88889
301 http://www.yahoo.co.jp/s/58148
301 http://www.yahoo.co.jp/r/fsec
302 http://www.yahoo.co.jp/f/eventbox/12986106002/*-http:/event.yahoo.co.jp/sphone01/
301 http://www.yahoo.co.jp/r/pcl
301 http://www.yahoo.co.jp/s/88947
302 http://www.yahoo.co.jp/z/3337_2
301 http://www.yahoo.co.jp/r/mcfp
302 http://www.yahoo.co.jp/f/topics/top_table/3/*-http:/dailynews.yahoo.co.jp/fc/domestic/breach_of_trust/?1298642041
301 http://www.yahoo.co.jp/r/lhkn
301 http://www.yahoo.co.jp/s/56091
302 http://www.yahoo.co.jp/f/topics/top_table/9/*-http:/dailynews.yahoo.co.jp/photograph/pickup/?1298636768
301 http://www.yahoo.co.jp/s/79558
301 http://www.yahoo.co.jp/r/pnr
301 http://www.yahoo.co.jp/r/myid
301 http://www.yahoo.co.jp/r/fin
301 http://www.yahoo.co.jp/r/fcgi
301 http://www.yahoo.co.jp/r/fhr
301 http://www.yahoo.co.jp/r/fpv
301 http://www.yahoo.co.jp/r/fiv
301 http://www.yahoo.co.jp/r/c20
301 http://www.yahoo.co.jp/r/fdi
301 http://www.yahoo.co.jp/r/fad
301 http://www.yahoo.co.jp/r/fcsr
302 http://www.yahoo.co.jp/f/topics/top_table/8/*-http:/dailynews.yahoo.co.jp/fc/entertainment/minako_komukai/?1298619183
301 http://www.yahoo.co.jp/r/ftm
=end
require "uri"
require "rubygems"
require "typhoeus"
require "nokogiri"
unless start = ARGV.first
puts "Usage: #{$0} [url]"
exit
end
hydra = Typhoeus::Hydra.new
body = Typhoeus::Request.get(start).body
doc = Nokogiri::HTML.parse(body)
doc.xpath('//a[@href]').each{|a|
href = a.attributes['href'].to_s.strip
next if href.length == 0
begin
page = URI.join(start, href).to_s
req = Typhoeus::Request.new(page, :method => :head)
req.on_complete{|res|
puts "#{res.code}\t#{page}"
}
hydra.queue req
rescue URI::InvalidURIError => ex
puts "xxx\t#{href}"
end
}
hydra.run
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment