我试图从远程页面获取一个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>&nbsp;</td>
</tr>
</table>
请有人指出我的语法出错了。任何帮助非常感谢!
答案 0 :(得分:1)
1)您只有一个TableRow和一个TableCell。您需要为每个行/单元格创建一个新的。您可以重复使用这些变量,但需要在其中“新建”一个对象。
2)您可能需要选择./tr
和./td
才能获取当前表/行中的行和单元格。