开发者

How to use Using the HtmlAgilityPack to get table value

http://w开发者_如何学Cww.dsebd.org/latest_PE_all2_08.php

i work on asp.net C# web.Above url contain some information ,i need to save them in my database and also need to save then in specified location as xml format.This url contain a table.I want to get this table value but how to retrieve value from this html table.

HtmlWeb htmlWeb = new HtmlWeb();

            // Creates an HtmlDocument object from an URL
            HtmlAgilityPack.HtmlDocument document = htmlWeb.Load("http://www.dsebd.org/latest_PE_all2_08.php");

I need help to get table information from this document .How to save this table value.Show me some syntax


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;
        }

    }

In this way u can easily create a DataTable and then can save is DataBase.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜