我需要从下面的链接下载第一个/前5个日期的PDF文件,并将它们保存在桌面上。我不知道如何开始,但也无法在Google上找到明确的内容。
你认为你可以帮助我吗?
答案 0 :(得分:2)
我会使用Internet Explorer,并使用SHDocVw.InternetExplorer对象(VBA引用'Microsoft Internet Controls',ieframe.dll)自动执行它。
您可以(a)使用Set x = New SHDocVw.InternetExplorer
创建新的Internet Explorer窗口,或者(b)使用Set owins = CreateObject("Shell.Application").Windows
获取现有的Internet Explorer窗口(owins
是一个数组,循环使用它直到你找到一个Mid(TypeName(owins(i).Document), 1, 12) = "HTMLDocument"
)。
拥有Internet Explorer ie
后,您可以致电ie.Navigate(url)
转到网站。
要等待Internet Explorer在查询之前完成导航,您可以运行以下内容:
Do While mascot_win.Busy
Application.Wait DateAdd("s", 1, Now)
DoEvents
Loop
要获取该页面上前五个PDF的URL,您需要检查页面的HTML。有两种方法,取决于HTML的格式。如果HTML编写得很好,那么您可以使用ie.Document.all()
导航文档对象模型(标记,如XML)。但如果HTML格式不正确,您可能不得不求助于从ie.Document.all(0).innerHTML
阅读HTML。
根据您提供的链接外观,您将寻找以下内容:
<li>Data de <strong>22.03.2013</strong>, numarul: <a href="/wp-content/uploads/Ordin-149P-din-22.03.2013.pdf">149P</a></li>
一旦隔离了每个PDF URL(使用DOM模型中的<a>
标记的属性或在HTML上使用了大量Mid()
次调用),您可以使用以下命令下载:
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
Dim ss As String
Dim ts As String
ss = "http://blah/blah/blah.pdf"
ts = "c:\meh\blah.pdf"
URLDownloadToFile 0, ss, ts, 0, 0