html parse with HtmlAgilityPack in C#

asp.net c# html html-agility-pack parsing

Question

WebClient webClient = new WebClient();
string page = webClient.DownloadString(
    "http://www.deu.edu.tr/DEUWeb/Guncel/v2_index_cron.html");

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(page);

I need to parse the above-mentioned website in order to get the table's row data. I tried doing it with various instances, but I was unable to succeed. Any advice?

1
1
10/12/2015 1:32:11 PM

Accepted Answer

For instance, you could parse the rows as follows:

using System.Net;
using HtmlAgilityPack;

namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {
            WebClient webClient = new WebClient();
            string page = webClient.DownloadString("http://www.deu.edu.tr/DEUWeb/Guncel/v2_index_cron.html");

            HtmlDocument doc = new HtmlDocument();
            doc.LoadHtml(page);

            HtmlNode table = doc.DocumentNode.SelectSingleNode("//table");
            foreach (var cell in table.SelectNodes("tr/td"))
            {
                string someVariable = cell.InnerText;
            }
        }
    }
}

To be thorough, you can quickly create an enumerable with all non-empty row values using LINQ:

    private static void Main(string[] args)
    {
        WebClient webClient = new WebClient();
        string page = webClient.DownloadString("http://www.deu.edu.tr/DEUWeb/Guncel/v2_index_cron.html");

        HtmlDocument doc = new HtmlDocument();
        doc.LoadHtml(page);

        HtmlNode table = doc.DocumentNode.SelectSingleNode("//table");
        var rows = table.SelectNodes("tr/td").Select(cell => cell.InnerText).Where(someVariable => !String.IsNullOrWhiteSpace(someVariable)).ToList();
    }
2
10/12/2015 1:20:18 PM

Popular Answer

Here is an example of how to write the inner text of each table cell to the console by iterating over all of the table cells.

WebClient webClient = new WebClient();
var page = webClient.DownloadString("http://www.deu.edu.tr/DEUWeb/Guncel/v2_index_cron.html");

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(page);

foreach (var td in doc.DocumentNode.SelectNodes("//table/tr/td"))
{
    Console.WriteLine(td.InnerText);
}


Related Questions





Related

Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow