WinXp のVB6 sp6 にて、
下記のURLの
http://www.yuushirai.jp/shirai/Licence/Exam/Exammenu.html の中の
下記のページ内の
http://www.yuushirai.jp/shirai/Licence/Exam/1-soutu.html の中の
「2012.09」「 問題 」のリンク先URL
http://www.yuushirai.jp/shirai/Licence/Exam/mon/sogo-tu-1/201209/sogo-tu-1-kiso-mondai-201209.pdf を保存したいと思いますが
別ページの内容が保存されてしまい目的のPDFの保存が出来ません。
保存されてしまうは下記のページです。
http://www.yuushirai.jp/shirai/Licence/Exam.html
Webページ上でリンク「2012.09」の「 問題 」をクリックすれば別ページには表示されるのですがVBにて自動保存をしようとしています。
ご指導をお願いします。
Private Declare Function URLDownloadToFile Lib "urlmon" _
Alias "URLDownloadToFileA" (ByVal pCaller As Long, _
ByVal szURL As String, ByVal szFileName As String, _
ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
Private SaveFileName As String
Private DownloadFile As String
Private Ret As Long
Private Sub Command1_Click()
URL = "http://www.yuushirai.jp/shirai/Licence/Exam/mon/sogo-tu-1/201209/sogo-tu-1-kiso-mondai-201209.pdf"
SaveFileName = "C:\201209.pdf"
DownloadFile = URL
Ret = URLDownloadToFile(0, DownloadFile, SaveFileName, 0, 0
End Sub
IE等のブラウザで試してみると分かりますが、pdfのURLを直接ブラウザのアドレスバーに入力した場合でも、
http://www.yuushirai.jp/shirai/Licence/Exam.html が表示されます。
おそらくこのサイトのWebサーバー側で、自身のサイトからpdfのURLのリクエストがあった場合だけpdfのレスポンスを出力し、
それ以外はトップページのサイトにリダイレクトするような設定になっているのだと思います。
ではどうすればいいのかというと、ゴメンナサイ、分かりません。
ありがとうございます。
おっしゃる通りになっているのは分かります。
そこで、どうすればVB6から保存出来るのかをお尋ねしたしだいです。
VB6で該当リンクをクリックさせる事は出来たのですが新たにIEが開いてPDFページが表示されます。
このページをVB6にて保存する方法でも分かると良いのですが。
> VB6で該当リンクをクリックさせる事は出来たのですが
これはWebBrowserかIEをVBで操作して行いましたか?
WebBrowserにしろ、IEにしろ、pdfが別画面で開いたということは、そのpdfのキャッシュが保存されていると思いますので、
そのキャッシュファイルを持ってくることでpdfファイルを得ることができる可能性はあります。
キャッシュからのファイルを見つけてくる方法として、以下が参考になるかもしれませんが、
これは.netのもので、しかもある程度Windows APIの理解が必要になりますので、ハードルが高いように思います。
(しかも中国語のサイトです)
http://www.4ucode.com/Study/Topic/1566138
ただし、この方法でも、IEでpdfのページが別ウィンドウで開くことは免れません。
(WebBrowserを使ってNewWindow2イベントを捕捉できれば、ダミーのWebBrowserに表示させることでいけるかも知れないが未確認)
どちらにしろ、Webサーバーの設定のため、正攻法(pdfを直ダウンロード)は無理のようです。
...と書いてしまいましたが、キャッシュを利用する場合であれば、このpdfが一時ファイルとして
キャッシュされているかどうかを確認する必要がありますね。
キャッシュのあるフォルダは、XPだと(WindowsシステムのあるドライブをC:ドライブとすると)デフォルトは以下のフォルダになります。
C:\Documents and Settings\ユーザー名\Local Settings\Temporary Internet Files
もし該当のpdfがここになければ、キャッシュを利用する方法は使えないですね。
キトキトさん、ありがとうございます。
VB6にてのWebBrowser上にURLを表示させて、希望pdfのリンクを
クリックすると言う操作を行いました。
pdfが一時ファイルとしてキャッシュされていますね。
今は自宅ではないのでVB6のテストが出来ませんが帰宅後に
キャッシュのあるフォルダをサーチして .pdf を探し希望フォルダにコピーするようにして見ます。
IEがその数だけ開いてしまいますが、これを自動削除する方法も探して見ます。
ありがとうございました。
下記の様に連続で取得しようとするとトップページのサイトにリダイレクトされて
しまう事もありますが、一応はキャッシュされてるPDFも取れましたので
「解決」とさせていただきます。
For i = 0 To 10
WebBrowser1.Document.Links(i).Click
DoEvents
Sleep 5000
Next i
ツイート | ![]() |