我需要从下面的链接中下载第一/前5个日期的PDF文件,并将它们保存在桌面上。我不知道如何开始,但也找不到明确的谷歌。从网站/网页下载/保存文件
你认为你可以帮我吗?
http://cetatenie.just.ro/ordine/articol-11/
我需要从下面的链接中下载第一/前5个日期的PDF文件,并将它们保存在桌面上。我不知道如何开始,但也找不到明确的谷歌。从网站/网页下载/保存文件
你认为你可以帮我吗?
http://cetatenie.just.ro/ordine/articol-11/
我会使用IE浏览器,并使用SHDocVw.InternetExplorer对象自动执行它(VBA参考 'Microsoft Internet控制',ieframe.dll)。
您可以(一)创建使用Set x = New SHDocVw.InternetExplorer
或(b)取得使用Set owins = CreateObject("Shell.Application").Windows
现有的Internet Explorer窗口,一个新的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(使用<a>
标签的任何属性在DOM模型或使用大量的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
我想说,这里我需要的非常多,你在这里做了一项了不起的工作,我只需要一段时间来更好地理解“隔离”和的用法。非常感谢你! – maximladus 2013-03-26 08:44:27
拉索,忘了告诉你,定期更新页面,并定期添加其他文件。我认为代码应该会改变一点...不是? – maximladus 2013-03-26 08:57:21
只要你仍然想下载前五个文件,并且HTML仍然遵循相同的模式,那么你不需要改变代码。代码的一般结构可能会遍历元素,并且在识别并下载五个文件后,停止循环。只要网页作者只是将新文件添加到列表顶部,使用与他/她平常相同的模式,那么您的代码就不需要更改。 – user2185045 2013-03-27 05:46:59
你可以从这里开始:http://en.wikipedia.org/wiki/Web_scraping – rocky 2013-03-25 12:35:41
OK,基本思路是明确的,是有可能通过VBA做到这一点?谢谢! – maximladus 2013-03-25 13:04:23
是的,我认为这篇文章:http://blogs.msdn.com/b/lucian/archive/2009/02/21/web-scraping-with-vb-s-xml-support.aspx描述了你想要实现。 – rocky 2013-03-25 16:12:04