首页 > 解决方案 > 使用VB.NET将网页表行中的值提取为字符串

问题描述

我应该先让你知道我不是编码员。我只是一个懂一点VB.NET,喜欢效率的人。

我正在使用 WebBrowser1.Document.Body.InnerHtml 来获取 webbrowser 元素中网页的源代码,源代码内部是这个 Table Row

<tr>
    <td width="60px">
        11/04/18    </td>
    <td width="80px">
        John Smith  </td>
    <td>
        CHARGED_ONBOARDING_FEE - Admin manual charged   </td>
</tr>

我可以很容易地检查 CHARGED_ONBOARDING_FEE 是否出现在页面中:

i = WebBrowser1.Document.Body.InnerHtml   

If i.Contains("CHARGED_ONBOARDING_FEE") Then

    RichTextBox1.AppendText("OB PAID" & vbNewLine)

    Else

    RichTextBox1.AppendText("NO FEE" & vbNewLine)

    End If

但是,无论如何我可以提取那个日期(11/04/18)吗?

是否有可能有这个工作流程或类似的东西?

 1. if exists CHARGED_ONBOARDING_FEE proceed

 2. Check backward in string for <td width="60px"> if exists proceed

 3. date1 = string between "60px"> and </td>

 4. RichTextBox1.AppendText("OB PAID" & " on " & date1 & vbNewLine)

感谢您的任何帮助,请放轻松!

标签: htmlvb.net

解决方案


基于几米的想法:</p>

Dim date1 as string
Dim textExistOrNot as Boolean = false

'get collection of all tr in the webpage
For Each trSect As HtmlElement In WebBrowser1.Document.GetElementsByTagName("tr")

    If trSect.innerText Is Nothing Then

    Else
         'get the tr which has the text "CHARGED_ONBOARDING_FEE" inside it (including its children)
         If trSect.innerText.Contains("CHARGED_ONBOARDING_FEE") then

              'the first child is <td width="60px"> 11/04/18 </td>, it is item(0)
              'the second child is <td width="80px"> John Smith </td>, it is item(1)
              'the third child is <td> CHARGED_ONBOARDING_FEE - Admin manual charged </td>, it is item(2)
              date1 = trSect.Children.item(0).innerText
              RichTextBox1.AppendText("OB PAID" & " on " & date1 & vbNewLine)
              textExistOrNot = true

         End if

    End if   

Next

If textExistOrNot is false then

    RichTextBox1.AppendText("NO FEE" & vbNewLine)

End if

希望这些代码可以解决您的问题。


推荐阅读