asp.net vb (htmlagilitypack)에서 htmltable로 html에서 표 추출하기

asp.net html-agility-pack html-table vb.net web-scraping

문제

원격 페이지에서 html 테이블을 가져 와서이 테이블의 내용을 내 사이트의 htmltable에 표시하려고합니다. 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

이것으로부터 나는 페이지에서 innertext를 가진 전체 테이블을 얻을 수 있기를 기대했습니다. htmltable은 조작 할 수 있습니다. 이 코드에서 벗어난 내용은 다음과 같습니다.

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

제 신구법에 어긋나는 부분을 지적 해주십시오. 도움이 많이 감사!

인기 답변

1) 하나의 TableRow와 하나의 TableCell 만 있습니다. 각 행 / 셀에 대해 새 셀을 만들어야합니다. 변수를 다시 사용할 수 있지만 개체를 ​​"새로 작성"해야합니다.

2) ./tr./td 를 선택하여 현재 테이블 / 행에있는 행과 셀만 ./td 할 수 있습니다.




아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.