- PR -

[C#2005/Windowsアプリ]WEBページをローカル保存する方法

投稿者投稿内容
ちづる
ベテラン
会議室デビュー日: 2004/07/27
投稿数: 72
投稿日時: 2007-08-18 17:11
Windowsアプリにて以下のような物を作りたいと思ってます。
ID/PASS/種別の入力の必要のあるWEBページ(Aページ)へアクセス

AページのメニューからBページへアクセス

Bページをローカル保存
※全てをプログラムで自動化

私が試した方法は以下の2つです。
1)DOBON.NETさんで公開してる「Cookieを使ってファイルをダウンロード」という方法
→無事Bページの保存はできたのですがCSSや画像を多用しているせいか
保存したHTMLに情報が足りないように見える(消しこみ線やいろいろなタグをCSSでカバーしているようで、HTMLだけでは完全なファイルになりませんでした・・・)

2)axWebBrowserの使用
→Bページまでアクセスすることはできましたが、保存ができませんでした。
(また、Aアクセス→Bアクセス→axWebBrowser.ExecWBと続けるとaxWebBrowser.ExecWBで例外処理が必ず発生してしまいました。
また例外が発生しないように処理を分けても、axWebBrowser.ExecWB自体が自動で保存できないので無理でした)

では、WEBページをPDFに変換して保存してはどうだろうか?と思いWEBで
かなり調べたのですがC#に適応してるPDF変換方法やAPIを発見できませんした。

WindowsアプリでWEBページをローカル保存する良い方法がありますでしょうか?
宜しく御願いします。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2007-08-18 18:22
引用:

2)axWebBrowserの使用
→Bページまでアクセスすることはできましたが、保存ができませんでした。



ExecWB(IDM_SAVEAS) では駄目なのでしょうか。
ちづる
ベテラン
会議室デビュー日: 2004/07/27
投稿数: 72
投稿日時: 2007-08-18 19:31
ダメでした。
処理1 Aページのアクセス
処理2 Bページへのアクセス→ExecWB(IDM_SAVEAS)

の場合は上手くいくのですが全てを一つの処理の中に記述するとExecWBでなぜか例外処理が発生してしまいます。
また
処理3 処理1と処理2の呼び出し
としてみてもやはり同じ所でエラーが発生してしまいます。

もしこのエラーがでない方法があっても保存のダイアログで「マウスを押す(保存ボタン押下)」という人的操作が発生してしまいます・・・。
保存まで全てを処理で行いたいのです・・・。

渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2007-08-18 20:14
引用:

処理1 Aページのアクセス
処理2 Bページへのアクセス→ExecWB(IDM_SAVEAS)

の場合は上手くいくのですが全てを一つの処理の中に記述するとExecWBでなぜか例外処理が発生してしまいます。



処理1, 処理2 間(あるいはそれ以外の箇所でも)でメッセージポンプを回さないと駄目なのかもしれないですね。

引用:

もしこのエラーがでない方法があっても保存のダイアログで「マウスを押す(保存ボタン押下)」という人的操作が発生してしまいます・・・。



なるほど、自プロセスに対してなら .NET でもメッセージフックを使ってなんとかなるかもしれませんが、あまりスマートな解とは言えませんね。

引用:

保存まで全てを処理で行いたいのです・・・。



ブラウザコントロールで駄目となると全部自前でなんとかするしかなさそうですが、かなり大変だと思います。
ちづる
ベテラン
会議室デビュー日: 2004/07/27
投稿数: 72
投稿日時: 2007-08-18 21:51
はい、ですのでExecWBの使用はむずかしいかと思いました・・・。
ではPDF化してはどうだろう?と思ったのです。

WindowsアプリでWEBページをPDF化は無理なのでしょうか・・・?
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2007-08-19 00:15
引用:

ではPDF化してはどうだろう?と思ったのです。

WindowsアプリでWEBページをPDF化は無理なのでしょうか・・・?



どういう操作を想定していますか?

アプリケーションで PDF を作成するためのライブラリも存在しますが、そもそも PDF を組み立てるための「ネタ」の獲得の段階で詰まっているんじゃないんでしょうか。
れい
ぬし
会議室デビュー日: 2005/11/01
投稿数: 346
投稿日時: 2007-08-19 00:27
全部自動化したいならBrowserを使うのは遠回りではないですか?

HttpWebRequestで保存できるなら、
あとは取得したHTMLをパースして
足りない画像など外部ファイルも
ダウンロードすればいいだけだと思いますが。

外部ファイルが変更されない用途なら
初めからローカルで持っていてもいいですし。
hei
ベテラン
会議室デビュー日: 2006/09/07
投稿数: 78
投稿日時: 2007-08-19 01:05
画像として保存したいのなら次のサイトなどに解説がありますよ。

http://passing.breeze.cc/mt/archives/c/
http://homepage1.nifty.com/yasunari/VB/VB2005/WebBrowserDrawToBitmap.htm

スキルアップ/キャリアアップ(JOB@IT)