将表从html提取到asp.net vb中的htmltable(htmlagilitypack)

时间:2011-09-22 08:31:35

标签: asp.net vb.net web-scraping html-table html-agility-pack

我试图从远程页面获取一个html表,并在我的网站上的htmltable中显示该表的内容。我正在使用htmlagility pack。到目前为止,这是我的代码:

Imports HtmlAgilityPack
Partial Class ContentGrabExperiment
    Inherits System.Web.UI.Page
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        'fetch the remote html page
        Dim web As New HtmlWeb()
        Dim html As HtmlAgilityPack.HtmlDocument = web.Load("http://www.thesite.com/page.html")

        'Create table
        Dim outputTable As New HtmlTable
        Dim tableRow As New HtmlTableRow
        Dim tableCell As New HtmlTableCell


        'Target the <table> tag 
        For Each table As HtmlNode In html.DocumentNode.SelectNodes("//table")
            'Target the <tr> tags within the table
            For Each row As HtmlNode In table.SelectNodes("//tr")
                'Target the <td> tags within the <tr> tags
                For Each cell As HtmlNode In row.SelectNodes("//td")
                    'Set the value to that of the <td>
                    tableCell.InnerText = cell.InnerHtml
                    'Add the cell to the row
                    tableRow.Cells.Add(tableCell)
                Next
                'Add row to the outputTable 
                outputTable.Rows.Add(tableRow)
            Next
        Next
        'Add the table to the page
        PlaceHolderTable.Controls.Add(outputTable)
    End Sub
End Class

由此我希望从页面获得带有innertext的完整表,作为一个htmltable然后我可以操作。我从这段代码中得到的是:

 <table>
    <tr>
        <td>&amp;nbsp;</td>
    </tr>
</table>

请有人指出我的语法出错了。任何帮助非常感谢!

1 个答案:

答案 0 :(得分:1)

1)您只有一个TableRow和一个TableCell。您需要为每个行/单元格创建一个新的。您可以重复使用这些变量,但需要在其中“新建”一个对象。

2)您可能需要选择./tr./td才能获取当前表/行中的行和单元格。