1 名前:前スレ1 [2005/12/26(月) 02:56:22 ] 前スレ5年間のご愛顧ありがとうございました。PGFは無事コンプしましたが、これからも皆様の日々 実践されているノウハウを教えていただきたく再度、スレを立てさせてもらいました。 前スレ 連番のH画像を一気にダウンロードする pc8.2ch.net/test/read.cgi/unix/979106537/
281 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/19(金) 18:19:24 ] 対策っていうか, 多分画像が貼ってあるページの構造が変わって, scrapeimgname() と scrapeimgurl() がファイル名と url を 抽出できなくなっただけ. これらの関数は getpics() から呼び出され, 抽出できなかった場合に return 0 するが, getpics() 側で特にエラー処理 してないので, エラーにならず get [0] ... とかなって走りつづけてる (本当は 0 のとこに scrapeimgname() の戻り値であるファイル名が入る). モジュールに依存しないように html の parse を自前でやってるが, 俺は面倒なので, HTML::TreeBuilder::XPath 使って書き直した. あと HTTP::Response->status_line がメソッド呼び出しなのに double quote で文字列展開しようとしてるので, status_line が 正しく表示できてないのもバグっぽい. "@{[ $res->status_line ]}" とかしといた方がいい.
282 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/19(金) 18:51:06 ] bandwidthがperlだとブラウザより高いのけ? QoSでperlへの帯域絞るしか無い?
283 名前:名無しさん@お腹いっぱい。 [2010/02/19(金) 22:35:10 ] img id.*でマッチングするようにscrapeimgnameとscrapeimgurlを書き換えたら動いたよ。 オリジナルは画像鯖のドメインでマッチングしてたんだけど、ドメインが変わったからマッチしなくなったんだね。 >>282 オリジナルだと4秒ぐらいで取りに行っちゃうから、間隔を10秒以上とるようにsleepを書き換えるとけっこう快適になるよ。
284 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/19(金) 23:06:49 ] >>283 サブルーチンを書き換えればいいのかな
285 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/19(金) 23:17:33 ] $t=(rnd($base1000))+10 とか?
286 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/19(金) 23:19:13 ] >>284 そうそう。waitpとかいう名前だったはず。
287 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/19(金) 23:21:06 ] 私も、img idでマッチする様に書換えて、動きました。 書出すファイル名は、altタグから引っぱればいいかな。
288 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/19(金) 23:23:28 ] >>283 便乗して悪いけど img id.* ってのはscrape〜の if ( m|src="r.e-hentai.org/.*? "| ) の部分のことでいいのかしら
289 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/19(金) 23:25:00 ] $t=(rnd($base1000))+10 とか?
290 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/19(金) 23:26:00 ] うあ base/1000の間違い すまぬ
291 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/20(土) 01:13:58 ] perlの記述がよく分からないんだけども 正規表現とかimgタグとかは他の言語とかと一緒なのかな
292 名前:157 mailto:sage [2010/02/20(土) 01:54:50 ] URLとイメージ名のスクレイパの正規表現の手直しと waitpの時間延長を施した新ヴァージョンができました www1.axfc.net/uploader/Sc/so/84683.zip&key=ehg
293 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/20(土) 11:01:04 ] 157さんサンクス! ちゃんと動いてます。
294 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/20(土) 17:10:24 ] use LWP ; my $ua = LWP::UserAgent->new; $ua->agent("User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0;rv:1.9.2) "); $ua->timeout(180); $ua->proxy('http', '127.0.0.1:80/ ');
295 名前:157 mailto:sage [2010/02/20(土) 21:05:59 ] 上のバージョンで>>281 氏のstatus_lineのデバッグ入れるの忘れてました すいません
296 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/21(日) 13:12:16 ] 今スクリプトのデバッグ中にふと思いついたしょーもない むしろ '常識知らねーな' と言われそうな変更を試してる。 これで4ページ/分のペースで14冊330ページ99MBまで落としたが 一向に帯域制限がやって来ない。昨夜は引っ掛かりまくりだったし 今まで3日の間を空けたってこんなこと無かったんだがな。 サーバのプログラムが変わったばかりらしいがバグを突けたのか? それとも今日は感謝デーなのか?
297 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/21(日) 13:21:48 ] >>296 変更前と後のスクリプトで試してみて 両方とも帯域制限が来ないなら 今日は感謝デー 後の変更済みスクリプトだけに帯域制限がこないなら その変更は大当たり
298 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/21(日) 13:35:43 ] >>297 おぉ、そりゃそうだ。舞い上がって変化点検証の基本を忘れてた。やってみる。
299 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/21(日) 14:56:32 ] すまん。サービス期間中だったようだ。 変更前のコードでも222ページ75MBまでスルスル落とせた後に 509 がやってきた。 その直後に変更後のコードを掛けてみたがやっぱり 509 だった。 多分週末メンテナンスで俺のカウンタがリセットしたとかなんだろうな。 クッキーなくなってるね。リダイレクトもなし。img id=xxx は相変わらず付いてるけど 肝心の id の値はHTML本文中に見つからない。
300 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/21(日) 16:34:57 ] 157さんのツールで、DLするページによってサムネイルページで400エラーを吐くのは何故でしょうか?
301 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/21(日) 20:17:10 ] >>300 オレもそういうページあるけど多分複数ページじゃなくて単独ページの場所だと 動かないっぽい。 ベースページを解析するルーチンで1ページしかないページだと構文解析できずに 終わってるっぽいな。 直すのめんどいんで手作業でやってるけどね。 ついでだけど500枚くらいのやつだとエラー途中までしかDLしないのは仕様?