2015-10-12 3 views
1
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); 

Я хочу проанализировать страницу, указанную выше, но я хочу получить информацию о строках таблицы. Я пытался сделать несколько примеров, но я не мог этого сделать. Любое предложениеhtml parse with HtmlAgilityPack in C#

ответ

2

Вы могли бы, например, разобрать строки вроде этого:

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

Для полноты использования 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(); 
    } 
+0

спасибо, что это сработало много. – OykunYenal

+0

Есть ли способ исправить турецкий характер, могу ли я дать атрибут UTF-8 в любом месте? – OykunYenal

+0

'// tr/td' рекурсивно перезапускается в корне дерева. Вероятно, вы хотите сделать '.// tr/td' или' tr/td', если знаете, что 'tr' находится непосредственно под' table' –

1

Вот пример перечисления через все ячейки таблицы и выписывая Каждый из них внутренний текст на консоль

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