Получение данных из таблицы HTML в таблицу данных

Итак, мне нужно запросить работающий веб-сайт, чтобы получить данные из таблицы, поместить эту HTML-таблицу в DataTable, а затем использовать это данные. До сих пор мне удавалось использовать Html Agility Pack и XPath для доступа к каждой строке в нужной мне таблице, но я знаю, что должен быть способ проанализировать ее в DataTable. (C#) В настоящее время я использую следующий код:

string htmlCode = "";
using (WebClient client = new WebClient())
{
htmlCode = client.DownloadString("http://www.website.com");
}
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();

doc.LoadHtml(htmlCode);

//My attempt at LINQ to solve the issue (not sure where to go from here)
var myTable = doc.DocumentNode
.Descendants("table")
.Where(t =>t.Attributes["summary"].Value == "Table One")
.FirstOrDefault();

//Finds all the odd rows (which are the ones I actually need but would prefer a
//DataTable containing all the rows!
foreach (HtmlNode cell in doc.DocumentNode.SelectNodes("//tr[@class='odd']/td"))
{
string test = cell.InnerText;
//Have not gone further than this yet!
}

HTML-таблица на веб-сайте, который я запрашиваю, выглядит следующим образом:

<table summary="Table One">
<tbody>
<tr class="odd">
<td>Some Text</td>
<td>Some Value</td>
</tr>
<tr class="even">
<td>Some Text1</td>
<td>Some Value1</td>
</tr>
<tr class="odd">
<td>Some Text2</td>
<td>Some Value2</td>
</tr>
<tr class="even">
<td>Some Text3</td>
<td>Some Value3</td>
</tr>
<tr class="odd">
<td>Some Text4</td>
<td>Some Value4</td>
</tr>
</tbody>
</table>

Я не уверен, что лучше/проще использовать LINQ + HAP или XPath + HAP. чтобы получить желаемый результат, я попробовал оба с ограниченным успехом, как вы, вероятно, видите. Это первый раз, когда я когда-либо делал программу для запроса веб-сайта или даже для взаимодействия с веб-сайтом каким-либо образом, поэтому в данный момент я очень не уверен! Заранее спасибо за любую помощь :)

5
задан Jack Eker 9 May 2012 в 09:40
поделиться