我对编程很陌生。 我需要从此HTML页面中提取数据:http://www.bmreports.com/servlet/com.logica.neta.bwp_MarketIndexServlet?displayCsv=false
我需要每30分钟左右更新一次数据。 因为,这个页面已经有链接提取csv中的当前数据,我希望有可能使用C#,VB.Net或某些VB脚本在csv中捕获这些信息。
我能够在excel上提取数据,因此可以考虑VB脚本。
非常感谢有关如何使用任何3 C#,VB.NET,VB脚本以CSV格式提取此信息的任何指导。
感谢, Ĵ
答案 0 :(得分:0)
此活动称为“网络抓取”。这是在C#中下载文件或将字符串内容保存在变量中的方法:
using System.Net;
using (WebClient client = new WebClient ())
{
// save web page source directly to disk
client.DownloadFile("http://example.com/page.html", @"C:\page.html");
// or save only to memory
string html = client.DownloadString("http://example.com/page.html");
// do post-processing here
}
更难处理的部分是处理/解析各种各样的HTML开始和结束标记,在许多情况下这不是一件容易的事。但是,您可能很幸运,因为我看到您提供的查询字符串包含该选项
displayCsv=false
。我会尝试将其设置为displayCsv=true
。数据应以CSV格式显示,这将更容易解析。
如果您对HTML标记的情况太困难,请查看此answer以获取可能的C#库或用于Web抓取的开源项目 - 但您需要检查许可证是否存在任何限制。
答案 1 :(得分:0)
以下是VB中用于从html页面读取和解析表的示例:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim web As New WebBrowser
AddHandler web.DocumentCompleted, New WebBrowserDocumentCompletedEventHandler(AddressOf webtocsv)
web.Navigate(New System.Uri("http://www.bmreports.com/servlet/com.logica.neta.bwp_MarketIndexServlet?displayCsv=false#"))
End Sub
Private Sub webtocsv(ByVal sender As Object, ByVal e As WebBrowserDocumentCompletedEventArgs)
Dim webcsv As WebBrowser = CType(sender, WebBrowser)
Dim tblrows As HtmlElementCollection
Dim tblcols As HtmlElementCollection
Dim column As String = ""
Dim csv As String = ""
tblrows = webcsv.Document.GetElementsByTagName("TABLE").Item(1).GetElementsByTagName("TR")
For r As Integer = 0 To tblrows.Count - 1
tblcols = tblrows.Item(r).GetElementsByTagName("TD")
For x As Integer = 0 To 4
column = tblcols.Item(x).InnerHtml
csv = csv + column
If (x < 4) Then csv = csv + ";"
Next
csv = csv + vbCrLf
Next
TextBox1.Text = csv 'show csv in textbox
End Sub
在csv
变量中,您格式化了由;
分隔的数据列。如果您不想要标题,请将For r As Integer =
设置为1
。