0

例如,我需要从下面的链接下载第一个/前 5 个日期的 PDF 文件,并将它们保存在桌面上。我不知道如何开始,但也无法在 Google 上找到明确的内容。

你觉得你能帮助我吗?

http://cetatenie.just.ro/ordine/articol-11/

4

1 回答 1

2

我会使用 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").WindowsowinsMid(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
于 2013-03-26T06:04:09.760 回答