VB下载网页文件或图片的方法
一、使用API函数URLDownloadToFile,下载网页、图片等其它文件到本地
引入API:
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
用法:
1 | Private Sub test() |
二、使用API函数OleLoadPicturePath,下载图片文件到变量,注意要勾选引用:OLE Automation
引入API:
Private Declare Function OleLoadPicturePath Lib "oleaut32.dll" (ByVal szURLorPath As Long, ByVal punkCaller As Long, ByVal dwReserved As Long, ByVal clrReserved As OLE_COLOR, ByRef riid As TGUID, ByRef ppvRet As IPicture) As Long
Private Type TGUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(0 To 7) As Byte
End Type
用法:
1 | Public Function LoadNetPicture(ByVal i_ImgUrl As String) As Picture |
三、使用Microsoft.XMLHTTP对象,下载网页、图片等其它文件到本地
定义公用下载过程:
1 | Public Sub DownNetFile(ByVal i_Url As String, ByVal i_File As String) |
用法:
DownNetFile "http://www.baidu.com/img/baidu_logo.gif", App.Path & "\My-1.bmp" '下载百度图片
DownNetFile "http://www.baidu.com", App.Path & "\Baidu.html" '下载百度首页的网页
四、使用WebBrowser的Document对象,保存网页的所有图片
先用 WebBrowser1 显示一个网页,如:
WebBrowser1.Navigate "http://www.baidu.com"
待网页加载完毕后,再执行以下语句:
1 | Dim v_Path As String, I As Long, E, v_Range |
五、用API调用系统的另存为下载对话框,进行文件下载
引入API:
Private Declare Function DoFileDownload Lib "shdocvw.dll" (ByVal lpszFile As String) As Long
用法:
1 | Dim v_Url As String |
六、用WebBrowser1的ExecWB方法调用网页另存为对话框下载
WebBrowser1.ExecWB OLECMDID_SAVEAS, OLECMDEXECOPT_DODEFAULT
以上方法各有优缺点。
Microsoft.XMLHTTP 对于大文件有利,支持断点续传,但需调用 getResponseHeader 进行数据检查。
对于谷歌地图图片,图片链接形如:http://mt1.google.cn/vt/lyrs=s@63&gl=cn&x=51694&s=&y=26884&z=16&s=Galile ,仅第四种方法有效。
本文根据rztyfx的专栏整理发表。