例如,我需要从下面的链接下载第一个/前 5 个日期的 PDF 文件,并将它们保存在桌面上。我不知道如何开始,但也无法在 Google 上找到明确的内容。
你觉得你能帮助我吗?
例如,我需要从下面的链接下载第一个/前 5 个日期的 PDF 文件,并将它们保存在桌面上。我不知道如何开始,但也无法在 Google 上找到明确的内容。
你觉得你能帮助我吗?
我会使用 Internet Explorer,并使用 SHDocVw.InternetExplorer 对象(VBA 参考“Microsoft Internet Controls”,ieframe.dll)将其自动化。
您可以 (a) 创建一个新的 Internet Explorer 窗口,或者 (b) 使用(是一个数组,遍历它直到找到一个 where )Set x = New SHDocVw.InternetExplorer
获取一个现有的 Internet Explorer 窗口。Set owins = CreateObject("Shell.Application").Windows
owins
Mid(TypeName(owins(i).Document), 1, 12) = "HTMLDocument"
拥有 Internet Explorerie
后,您可以打电话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()
. 但如果 HTML 格式不正确,您可能不得不求助于从ie.Document.all(0).innerHTML
.
根据您提供的链接的外观,您将寻找以下内容:
<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(使用<a>
DOM 模型中的标签属性或使用大量Mid()
对 HTML 的调用),您可以使用以下方法下载它:
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