Функция парсинга данных по тегам

Добрый день.

Сегодня рассмотрим функцию для парсинга данных с сайта по тегам.

Функция не сложная, но для начинающих может показаться сложной.

Разберем пример на моем блоге.

Попробуем вытащить текст заголовка (знаю, что можно с помощью класса WebBrowser с одной строкой кода это сделать, но сейчас речь идет о другом) по тегам <title> </title>.

Imports System.Net
Imports System.IO
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim WC As New WebClient ' Объявляем новый класс WebClient для обмена данными с ресурсом, заданным URI
        Dim HtmlText As String, Result As String
        HtmlText = WC.DownloadString(New Uri("https://ds-release.ru")) 'Загружаем блог, как строку, то есть получаем html код главной страницы блога.
        WC.Dispose()
        Result = Pars(HtmlText, ("<title>"), ("</title>")) 'Строка с html кодом главной страницы блога, первый открывающий тег, второй закрывающий тег
        MsgBox(Result) 'Результат
    End Sub
    ' Функция для парсинга. Советую просмотреть шаг за шагом и посмотреть на выполнение.
    Public Function Pars(ByRef strSource As String, ByRef strStart As String, ByRef strEnd As String) As String
        Dim iPos As Integer, iEnd As Integer
        Dim strResult As String
        iPos = strSource.IndexOf(strStart, 0)
        iEnd = strSource.IndexOf(strEnd, iPos + strStart.Length)
        If iPos <> -1 AndAlso iEnd <> -1 Then
            strResult = strSource.Substring(iPos + strStart.Length, iEnd - (iPos + strStart.Length))
        End If
        Return strResult
    End Function

Результат будет - "Уроки Visual Basic.NET"

Тоже самое вы можете проделать и с другими сайтами и тегами, только скажу, что не всегда так легко можно вытянуть текст заключенный в теги.

Экспериментируйте, а если что-нибудь не получается или не понятно, то жду ваши вопросы в комментарии.

Класс WebClient

  Метки:
  Евгений
  Просмотров: 12 193
  Запись опубликована в 16:38

7 комментариев

  • Заголовок вытаскивать легко.
    Лучше покажите, как вытащить несколько анкоров, чтоб перечисление анкоров было через запятую, они будут для одного URL.
     

  • Удалось на 80% поскольку криво делают страницы вебмастера.
    Может быть Вы свой вариант предложите?

  • А как выдернуть "10 марта" отсюда: "/search?c[section]=people&c[bday]=10&c[bmonth]=3"

    • Public Class Form1
      Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
      Dim Result As String
      Dim url As String = "/search?c[section]=people&c[bday]=10&c[bmonth]=3"
      Dim m As Integer
      Result = Pars(url, ("[bday]="), ("&c"))
      m = Val(url.Last)
      MsgBox(Result & " " & MonthName(m)) 'Результат
      End Sub
      Public Function Pars(ByRef strSource As String, ByRef strStart As String, ByRef strEnd As String) As String
      Dim iPos As Integer, iEnd As Integer
      Dim strResult As String
      iPos = strSource.IndexOf(strStart, 0)
      iEnd = strSource.IndexOf(strEnd, iPos + strStart.Length)
      If iPos -1 AndAlso iEnd -1 Then
      strResult = strSource.Substring(iPos + strStart.Length, iEnd - (iPos + strStart.Length))
      End If
      Return strResult
      End Function
      End Class

  • Не подскажите как фиксировать любое вхождение по маске?
    Задача: вытащить из кода все данные в теге ****

Есть что сказать? Тогда действуй!