Excel 2010从安全网站下载动态名称的CSV

时间:2015-02-23 10:04:10

标签: php excel vba csv web-scraping

我想要登录某个网站,导航到某个网页,然后下载.CSV文件,该文件始终以动态字符串结尾,因为它是自定义的#39;。

我尝试通过录制宏来访问该网站。但是,由于数据不在表格中,因此宏录制器无法获取.csv文件的实际地址。

显示文字始终为:

Results [link]Click to Download[/link]  

html值始终为:

<td class="smallText"><b>Results</b> <a href="vendor_report.php?report=custom [insert extremely long string here] ><u>Click to Download</u></a></td>   

没有使用表格,有没有办法达到这个目标.csv&amp;把它保存到我的电脑上? 我知道使用<td>表示它是表格的一部分,但它绝对不会捡起来,我已经使用宏录制器浏览了网站并且它没有采摘从页面中提取内容。
https://[domain].php?vf=vieworders

我还想过要导航到网站页面,突出显示文字,复制&amp;粘贴到我的书中的备用表格,然后使用一些代码L42之前写的here(下面)但是我甚至无法获得副本&amp;粘贴正常工作。

For Each hlink In ThisWorkbook.Sheets("NameOfYourSheet").Hyperlinks
    Set wb = Workbooks.Open(hlink.Address)
    wb.SaveAs saveloc & hlink.Range.Offset(0,1).Value & ".xlsx"
    wb.Close True
    Set wb = Nothing
Next

请指教。提前谢谢。

更新
我找到了隐藏在哪个表中的Table 2。然而,它正处于许多其他文本中 当我复制&amp;将表格内容粘贴到我的工作表上,我在获取链接以显示其HTML值时遇到问题,因此我可以将其与第二个选项一起使用(从电子表格中打开链接)。
这可能是我正在使用的原始Get Data代码的问题。

这就是它的样子。两侧的单元格都被填充,以及B20

中的大量(空白)文本

Regex可以在这里使用吗?

chunky data from web tabledownload

1 个答案:

答案 0 :(得分:0)

您可以尝试将XMLHTTP对象与流一起使用:

Sub SO()

Dim objStream As Object, strURL As String

Set objStream = CreateObject("ADODB.Stream")
strURL = "vendor_report.php?report=custom [insert extremely long string here]"

With CreateObject("Microsoft.XMLHTTP")
    .Open "GET", strURL, False
    .Send
    If .Status = 200 Then
        objStream.Open
        objStream.Type = 1
        objStream.Write .ResponseBody
        objStream.SaveToFile "C:\users\bloggsj\output.csv", 2
        objStream.Close
    End If
End With

Set objStream = Nothing

End Sub

根据需要更改保存路径。