我一直在寻找一种解决方案来自动从网站下载 csv 表,但我还没有找到可行的解决方案。
如果我使用 IE 或 Chrome,在上次登录后输入网址,文件会自动开始下载。为此,我有另一种方法通过 IE 和 HTML 对象通过导航然后保存来实现我所需要的,但它使用 sendkeys 并且它不是一个合适的解决方案。
我还尝试通过 WinHttpReq 下载来实现这一目标,这对我来说似乎是最有效和最优雅的方法。问题是 :它下载了文件,但不幸的是它输出了一个csv
包含登录页面 HTML 代码的文件-> 因此它必须登录失败。该站点是 HTTP。
按照我发现在几个论坛中按原样发布的代码进行操作。
Sub DownloadFile()
Dim myURL As String
valore = Range("f6").value
myURL = "www.myurlpointingtodownload.com"
Dim WinHttpReq As Object
Set WinHttpReq = CreateObject("Microsoft.XMLHTTP")
WinHttpReq.Open "GET", myURL, False, "[email protected] /cdn-cgi/l/email-protection", "passs"
WinHttpReq.send
myURL = WinHttpReq.responseBody
If WinHttpReq.Status = 200 Then
Set oStream = CreateObject("ADODB.Stream")
oStream.Open
oStream.Type = 1
oStream.Write WinHttpReq.responseBody
oStream.SaveToFile "C:\Users\mee\Desktop\fileoioi.csv", 2
oStream.Close
End If
End Sub
谢谢你,
鲍勃。
感谢亚历克斯和凯尔的提示,我查阅了这两篇文章,解决了我的问题。
nb -> 没有 cookie 处理和 http POST 请求的 Fiddlr 正文副本是我所需的 2 个步骤
这是我的解决方案:
Sub eds()
Dim strCookie As String, strResponse As String, _
strUrl As String
Dim xobj As Object
Dim WinHttpReq As Object
Set xobj = New WinHttp.WinHttpRequest
UN = "2myusername"
PW = "mypass"
strUrl = "http://my.website.com/"
xobj.Open "POST", strUrl, False
xobj.SetRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36"
xobj.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xobj.Send "username=" & UN & "&password=" & PW & "&login=login"
strResponse = xobj.ResponseText
strUrl = http://my.website.com/date=09-10-1945%&search 'the url pointing to the CSV file
xobj.Open "GET", strUrl, False
xobj.SetRequestHeader "Connection", "keep-alive"
xobj.SetRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36"
xobj.Send
strCookie = xobj.GetResponseHeader("Set-Cookie")
strResponse = xobj.ResponseBody
If xobj.Status = 200 Then
Set oStream = CreateObject("ADODB.Stream")
oStream.Open
oStream.Type = 1
oStream.Write xobj.ResponseBody
oStream.SaveToFile "C:\Users\me\Desktop\ciao\file.csv", 1
oStream.Close
End If
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)