Извлечение данных csv из HTML-страницы

-5

Я новичок в программировании. Мне нужно извлечь данные с этой HTML-страницы: http://www.bmreports.com/servlet/com.logica.neta.bwp_MarketIndexServlet?displayCsv=false

Мне нужно, чтобы данные обновлялись каждые 30 минут или около того. Поскольку на этой странице уже есть ссылка для извлечения текущих данных в csv, я надеялся, что можно будет захватить эту информацию в csv, используя либо С#, VB.Net, либо некоторый скрипт VB.

Я смог вытащить данные на excel, так что возможно сценарий VB.

Понравилось бы любое руководство по тому, как я могу извлечь эту информацию в формате CSV, используя любой из 3- С#, VB.NET, VB Script.

Спасибо, J

спросил(а) 2021-01-19T12:00:01+03:00 6 месяцев, 1 неделя назад
1
Решение
110

Вот пример работы в 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.

ответил(а) 2021-01-19T12:00:01+03:00 6 месяцев, 1 неделя назад
45

Эта деятельность известна как "веб-соскабливание". Здесь путь в С# для загрузки файла или сохранения содержимого строки в переменной:

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-тегами слишком сложна, взгляните на этот ответ на возможные библиотеки С# или проекты с открытым исходным кодом для веб-скрепок, но вам нужно будет проверить лицензии на какие-либо ограничения.

ответил(а) 2021-01-19T12:00:01+03:00 6 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема