Соскрести таблицу с веб-страницы в C # - PullRequest
2 голосов
/ 16 ноября 2011

Каков наилучший подход для построения функции для скручивания HTML-таблицы на веб-странице в переменную.

Я хочу иметь возможность передать ей какой-то уникальный идентификатор (например, идентификатор таблицы или что-то в этом роде)вернет все данные в нечто вроде DataTable.

Ответы [ 2 ]

5 голосов
/ 16 ноября 2011

Вы можете использовать HtmlAgilityPack для анализа HTML и извлечения данных таблицы.

Теперь, когда HAP поддерживает Linq, вы можете начать примерно так:

HtmlDocument doc = ...
var myTable = doc.DocumentNode
                 .Descendants("table")
                 .Where(t =>t.Attributes["id"].Value == someTableId)
                 .FirstOrDefault();

if(myTable != null)
{
    ///further parsing here
}
0 голосов
/ 27 ноября 2013
string htmlCode = "";
htmlCode = driver.PageSource.ToString();
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(htmlCode);

var gvTender = doc.DocumentNode.Descendants("table")
             .Where(table => table.Attributes.Contains("id"))
             .FirstOrDefault(table => table.Attributes["id"].Value == "ctl00_cphContentArea_gvTenders");

List<HtmlNode> rows = doc.DocumentNode.SelectNodes("//tr").Skip(10).ToList();
    foreach (var row in rows)
    {
        try
        {
            rowCount++;
            if (rowCount >= 16)
                break;

            List<HtmlNode> cells = row.SelectNodes("th|td").ToList();


            string s1 = cells[0].InnerText.ToString().Replace("\r\n", "").Trim();
            string s2 = cells[1].InnerText.ToString().Replace("\r\n", "").Trim();
            string s3 = cells[2].InnerText.ToString();
            string s4 = cells[3].InnerText.ToString();
            string s5 = cells[4].InnerText.ToString();
            string s6 = cells[5].InnerText.ToString();
            string s7 = cells[6].InnerText.ToString();
            string s8 = cells[7].InnerText.ToString();


        }
        catch (Exception ex)
        {

        }
    }
    //Developed By -Ramdas Chavan(Datamatics)
...