Извлечение таблицы из html в htmltable в asp.net vb (htmlagilitypack) - PullRequest
1 голос
/ 22 сентября 2011

Я пытаюсь получить таблицу html с удаленной страницы и отобразить содержимое этой таблицы в таблице html на моем сайте.Я использую пакет htmlagility.Итак, вот мой код:

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

Исходя из этого, я ожидал получить полную таблицу со внутренним текстом со страницы в виде html-таблицы, которой я могу затем манипулировать.Из этого кода я получаю следующее:

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

Пожалуйста, кто-нибудь может указать, где я ошибаюсь с моим синтаксисом.Любая помощь высоко ценится!

1 Ответ

1 голос
/ 22 сентября 2011

1) У вас есть только одна TableRow и одна TableCell.Вам нужно будет создать новый для каждой строки / ячейки.Вы можете повторно использовать переменные, но вам нужно будет «Новый» объект в них.

2) Возможно, вам придется выбрать ./tr и ./td, чтобы получить только строки и ячейки в текущей таблице/ строка.

...