使用方法HtmlAgilityPackを使用してテーブル値を取得する


質問

http://www.dsebd.org/latest_PE_all2_08.php

私はasp.net C#web.Above URLにいくつかの情報が含まれています、私はそれらを私のデータベースに保存する必要がありますまた、xml format.This URLとして指定された場所に保存する必要がありますこのテーブルの値を取得したいこのhtmlテーブルから値を取得する方法

http://www.dsebd.org/latest_PE_all2_08.php

私はこのドキュメントからテーブル情報を得るために助けが必要です。どのようにこのテーブルの値を保存する。

人気のある回答

public partial class WebForm3 : System.Web.UI.Page
    {
        private byte[] aRequestHTML;        
        private string myString = null;     
        protected System.Web.UI.WebControls.Label Label1;     
        private ArrayList a = new ArrayList(); 


        protected void Page_Load(object sender, EventArgs e)
        {
            WebClient objWebClient = new WebClient();

            aRequestHTML = objWebClient.DownloadData("http://www.dsebd.org/latest_PE_all2_08.php");
            // creates UTf8 encoding object
            UTF8Encoding utf8 = new UTF8Encoding();
            // gets the UTF8 encoding of all the html we got in aRequestHTML
            myString = utf8.GetString(aRequestHTML);

            string html = @"
        <html><head></head>
        <body><div>
            <table border=1>
                <tr><td>sno</td><td>sname</td></tr>
                <tr><td>111</td><td>abcde</td></tr>
                <tr><td>213</td><td>ejkll</td></tr>
            </table>
            <table border=1>
                <tr><td>adress</td><td>phoneno</td><td>note</td></tr>
                <tr><td>asdlkj</td><td>121510</td><td>none</td></tr>
                <tr><td>asdlkj</td><td>214545</td><td>none</td></tr>
            </table>
        </div></body>
        </html>";


            HtmlDocument htmlDoc = new HtmlDocument();
            htmlDoc.LoadHtml(myString);


            DataTable addressAndPhones;
            foreach (var table in ParseAllTables(htmlDoc))
            {
                if (table.Columns.Contains("Trading Code") && table.Columns.Contains("Close Price"))
                {
                    // You found the address and phone number table
                    addressAndPhones = table;
                }
            }


        }

        private static DataTable[] ParseAllTables(HtmlDocument doc)
        {
            var result = new List<DataTable>();
            foreach (var table in doc.DocumentNode.Descendants("table"))
            {
                result.Add(ParseTable(table));
            }
            return result.ToArray();
        }

        private static DataTable ParseTable(HtmlNode table)
        {
            var result = new DataTable();

            var rows = table.Descendants("tr");

            var header = rows.Take(1).First();
            foreach (var column in header.Descendants("td"))
            {
                result.Columns.Add(new DataColumn(column.InnerText, typeof(string)));
            }

            foreach (var row in rows.Skip(1))
            {
                var data = new List<string>();
                foreach (var column in row.Descendants("td"))
                {
                    data.Add(column.InnerText);
                }
                result.Rows.Add(data.ToArray());
            }
            return result;
        }

    }

このようにして、簡単にDataTableを作成してから、DataBaseを保存することができます。





ライセンスを受けた: CC-BY-SA
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ