Ruby 初心者スレッド ..
[2ch|▼Menu]
116:デフォルトの名無しさん
09/07/06 16:43:45
content-encoding見てないのはマズいと思うけど
>>109はHTTPレベルの問題じゃないような


117:デフォルトの名無しさん
09/07/06 16:45:14
付け加えておくとgzじゃないものを食わせた時は
Zlib::GzipFile::Error: not in gzip format

118:デフォルトの名無しさん
09/07/06 16:47:52
もなじら名乗ってない時点で問題外

119:デフォルトの名無しさん
09/07/06 16:49:01
>109のスクリプトを書き間違えていました。
============= ここから ============
require 'open-uri'
require 'zlib'
header = {'accept-encoding' => 'gzip'}

url = 'URLリンク(gimpo.2ch.net)' # errorが一度も起きていない
url2 = 'URLリンク(gimpo.2ch.net)' # errorが起きたり起こらなかったりする

open(url, header) do |io|
 Zlib::GzipReader.wrap(io) do |gz|
  puts gz.read # urlの中身が出力されたあとにerrorが起きる
  gz.finish #<= 書き忘れ
 end
end
============= ここまで ============

>110
2chのスレのdatを収集するプログラムです。
たまに気がつくとスレが1001になってdat落ちしてしまって、最後に開いた地点までしか読めなくなるのが悲しいので、
過去に開いたことがあるスレを定期的に拾いなおしてくれるプログラムを作りたいと思いまして。
プログラム自体は完成していて意図した通りに動くのですが、
転送量を少しでも削減したくてdatだけではなくsubject.txtを拾うときにgzip化しようと欲を出したらうまくいかなくなりました。

120:デフォルトの名無しさん
09/07/06 16:54:41
スレ更新をせず書き込んでしまいました。

>113
一応、DLする度にsleep 1.0 を入れています。
これでは不十分でしょうか?

>114
それは大変失礼しました。
今後は自力解決したいと思います。

>115
datの取得ではnet/httpを使っています。
一つのdomainから複数のファイルを拾うときにはnet/http, 1つのファイルを拾うだけならopen-uriというふうに使い分けていました。

121:115
09/07/06 17:17:01
header渡してなかった
txt = URI(url).read(header)
if txt.content_encoding.include?('gzip')
 :


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5384日前に更新/38 KB
担当:undef