簡體   English   中英

VB.NET下載HTML代碼表

[英]VB.NET download html code tables

我是vb.net的新手,我為自己創建的軟件存在很大的問題。

1.背景:

我的軟件中有代碼,可以將網頁的源代碼下載到.txt文件中,並過濾掉所尋找的信息。 對於普通的HTML代碼,它可以正常工作。


2.問題:

問題是當我無法在HTML代碼中定位特定參數時,因為它們太模糊了。


3.范例:

我可以下載這種獨特的HTML代碼,並將變量(在本例中為Brown)傳遞給軟件中的Strings,因為它位於同一行代碼中,因此具有唯一性:

<div class="Performer_DataLabel">Hair Color:</div> Brown</div>

但是我想知道如何搜索特定的表及其行和單元格(例如下面的代碼,其中顯示了我感興趣的1行和2個單元格的代碼):

1.  <tr>
2.      <td class="paramname">
3.         <b>Hair Color:</b>
4.      </td>
5.      <td class="paramvalue">
6.          Brown&nbsp;
7.      </td>
8.  </tr>

事實是,您可以看到,“頭發顏色:”可以是任何變量,例如“眼睛顏色”或“高度”,而“棕色”可以是該問題的任何答案。 這些表,行或單元格中沒有足夠的唯一代碼來定位這些代碼行,特別是當它們寫在一行上時。


4.我想要:

為了能夠像上述示例一樣在HTML代碼表中搜索和定位“頭發顏色”,並在其相鄰單元格中搜索/定位其答案(在這種情況下為棕色),並將其傳遞給String變量(我將永遠知道正在尋找“頭發顏色”,但我永遠不會事先知道頭發顏色問題的答案,而答案變量正是我想要的答案。


5.結論:

我可以使用哪些VB.NET代碼:

1)搜索/定位包含諸如“頭發顏色”或“眼睛顏色”之類的單詞的HTML代碼表。

2)搜索/定位他們的答案變量,而不管它們是什么。 (某些問題可能會有很長的答案,因此現在無法選擇IF或SELECT CASE語句來進行預測/比較)

3)將答案傳遞到我的軟件中的字符串。


6.注意

無論完整源代碼有幾百行,問題(頭發顏色)始終位於表行(第3行)的同一行。

答案也總是在表格行的同一行(第6行)上。

但是,問題行本身並不總是位於表的同一位置。

您可能想利用HTML敏捷包 ,解析HTML(即使無效)也非常有用。 您需要下載它,並將其添加到項目的引用中,然后在代碼文件的開頭添加Imports HtmlAgilityPack 下面是解決您的問題的代碼:

Imports HtmlAgilityPack
Public Class Form1

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Dim document As New HtmlAgilityPack.HtmlDocument, strAnswer As String
        document.Load("C:\tmp\1.html")
        For Each td As HtmlAgilityPack.HtmlNode In document.DocumentNode.Descendants("td")
            If td.InnerText.IndexOf("Hair Color") <> -1 Then
                strAnswer = next_td(td).InnerText
                MsgBox(strAnswer)
                Exit For
            End If
        Next
    End Sub
    Private Function next_td(td As HtmlNode) As HtmlNode
      Try
        If td.NextSibling.Name = "td" Then
            Return td.NextSibling
        Else
            Return next_td(td.NextSibling)
        End If
       Catch
       Throw New Exception("Last <td> in document reached")
       End Try
    End Function
End Class

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM