Silphireの日記: 改良版・日記の取得スクリプト 1
日記 by
Silphire
#!/usr/bin/ruby -Ke
require 'net/http'
# HTMLを取得
def gethtml(server, path)
# 初期化
s = ""
Net::HTTP.version_1_2
Net::HTTP.start(server, 80) do |http|
res , = http.get(path)
return res.body
end
end
# URLをサーバ部とパス部に分ける
def urlparse(url)
/http:\/\/(.*?)(\/.*$)/ =~ url
[$1, $2]
end
JOURNAL_START = /<!-- start template: ID (\d+), journallist;journal;default -->/
JOURNAL_PATTERN = /<TD VALIGN=.*?><A HREF="(.*?)"><B>.*?<\/B><\/A><\/TD>/
# 日記を取得
def getjournal(url, name)
server, path = urlparse(url)
html = gethtml(server, path)
# ファイルに保存
/&id=(\d+)/ =~ url
name = $1 + '.html'
file = open(name, "w")
file.write(html)
file.close
end
# 日記のリストを取得
def getlist(uid)
# html取得
server, path = urlparse("http://srad.jp/journal.pl?op=list&uid=#{uid}")
html = gethtml(server, path).gsub(/\s+/m, ' ')
# リストの手前まで移動
JOURNAL_START =~ html
html = $'
if html == nil
print "ごめん。このユーザはまだ日記を書いてないようです。\n"
exit
end
# リストから日記を取得
html.scan(JOURNAL_PATTERN) do |s|
url = s.shift.gsub(/&/, '&')
# ファイルが存在していなければ取得
/&id=(\d+)/ =~ url
name = $1 + '.html'
unless File.exist? name
print url, "\n"
getjournal(url, name)
end
end
end
if ARGV.empty?
print "Usage: #{$0} [user ID]\n"
exit
end
uid = ARGV.shift
# uidのディレクトリを作成
Dir.mkdir(uid) unless FileTest.exist?(uid)
Dir.chdir(uid)
# 日記取得
getlist(uid)
Dir.chdir('..')
require 'net/http'
# HTMLを取得
def gethtml(server, path)
# 初期化
s = ""
Net::HTTP.version_1_2
Net::HTTP.start(server, 80) do |http|
res , = http.get(path)
return res.body
end
end
# URLをサーバ部とパス部に分ける
def urlparse(url)
/http:\/\/(.*?)(\/.*$)/ =~ url
[$1, $2]
end
JOURNAL_START = /<!-- start template: ID (\d+), journallist;journal;default -->/
JOURNAL_PATTERN = /<TD VALIGN=.*?><A HREF="(.*?)"><B>.*?<\/B><\/A><\/TD>/
# 日記を取得
def getjournal(url, name)
server, path = urlparse(url)
html = gethtml(server, path)
# ファイルに保存
/&id=(\d+)/ =~ url
name = $1 + '.html'
file = open(name, "w")
file.write(html)
file.close
end
# 日記のリストを取得
def getlist(uid)
# html取得
server, path = urlparse("http://srad.jp/journal.pl?op=list&uid=#{uid}")
html = gethtml(server, path).gsub(/\s+/m, ' ')
# リストの手前まで移動
JOURNAL_START =~ html
html = $'
if html == nil
print "ごめん。このユーザはまだ日記を書いてないようです。\n"
exit
end
# リストから日記を取得
html.scan(JOURNAL_PATTERN) do |s|
url = s.shift.gsub(/&/, '&')
# ファイルが存在していなければ取得
/&id=(\d+)/ =~ url
name = $1 + '.html'
unless File.exist? name
print url, "\n"
getjournal(url, name)
end
end
end
if ARGV.empty?
print "Usage: #{$0} [user ID]\n"
exit
end
uid = ARGV.shift
# uidのディレクトリを作成
Dir.mkdir(uid) unless FileTest.exist?(uid)
Dir.chdir(uid)
# 日記取得
getlist(uid)
Dir.chdir('..')
コード (スコア:1)