SQLの窓

2018年10月14日


Ruby(mechanize) で Seesaa のエクスポート



さくらインターネットに mechanize をインストールしても、https が動かないので Windows10 で mechanize をインストールして実行しています。

Windows10 に mechanize のインストールも、C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/net-http-persistent-3.0.0/lib/net/http/persistent.rb を以下のリンク先のように変更する必要があります。

Sets a default pool size for Windows as Process::RLIMIT_NOFILE is not supported
# ▼ エラー
DEFAULT_POOL_SIZE = Process.getrlimit(Process::RLIMIT_NOFILE).first / 4

# ▼ 変更
if Gem.win_platform? then 
  DEFAULT_POOL_SIZE = 256
else
  DEFAULT_POOL_SIZE = Process.getrlimit(Process::RLIMIT_NOFILE).first / 4
end

引数は、cgi に引き渡される(cgi['no'])ので、#{cgi['no']} で文字列内に埋め込んで展開させます。

seesaa_backup.rb

Windows では、STDOUT が crlf で出力される為、Seesaa からの出力と同じにする為に、冒頭で STDOUT.binmode を実行しています。
# Seesaa エクスポート

STDOUT.binmode

# CGI 用
require "cgi"
cgi = CGI.new

# ヘッダを出力( ダウンロード用に application/octet-stream と ファイル名 )
puts "Content-Type: application/octet-stream; charset=utf-8"
puts "Content-Disposition: attachment; filename=export.log"
puts "Expires: Thu, 19 Nov 1981 08:52:00 GMT"
puts "Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0"
puts "Pragma: no-cache"
puts

# Mechanize 用
require 'mechanize'
agent = Mechanize.new

agent.verify_mode = OpenSSL::SSL::VERIFY_NONE
agent.follow_meta_refresh = true
agent.user_agent = 'Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko'

# ログインページ
page = agent.get("https://ssl.seesaa.jp/pages/welcome/login/input")
# FORM 要素の name 属性で参照
form = page.form_with(:name => 'authpost')

# FORM 要素内の入力
form["member__email"] = "メールアドレス"
form["password"] = "パスワード"

# FORM 要素を使用して送信
page = form.submit

# ここでログインが完了するので、目的のページへ移動する

# 対象ブログのページ( デフォルトで新規投稿へ移動 )
page = agent.get("http://blog.seesaa.jp/cms/home/switch?blog_id=#{cgi['no']}")

# エクスポートページへ移動
page = agent.get('http://blog.seesaa.jp/cms/tools/mt/export/input')

# このページの1番目の FORM
form = page.forms[0]

# この FORM で送信
page = form.submit

# 結果をブラウザに出力
print page.body


関連する記事


posted by lightbox at 2018-10-14 19:00 | Ruby 2018 | このブログの読者になる | 更新情報をチェックする
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり