我有一张如下表格。我想废弃该表每行的第1和第4列。
表的结构如下:
每个数据都有b
个标记
我试过这样的事情。但我没有获得我的结果
HtmlWeb web = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = web.Load("http://www.islam4you.info/contents/names/ma.php");
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//b");
double k = 5;
try
{
foreach (HtmlNode n in nodes)
{
if (k != 0)
{
if ((k % 5) == 1)
{
link = n.InnerHtml;
nam_list.Add(link);
}
if ((k % 5) == 4)
{
link = n.InnerHtml;
meng_list.Add(link);
}
}
k++;
}
}
catch (NullReferenceException)
{
MessageBox.Show("No link found");
}
如何从该表中获取第1列和第4列的数据???
答案 0 :(得分:0)
这可能听起来有点过分,但我认为在这种情况下使用库会更好。这对维护来说更好。
查看使用CsQuery
的容易程度[TestFixture]
public class HtmlParse
{
[Test]
public void Test()
{
var dom =
CQ.Create(
@"<table><tbody> <tr><td><b>Aadam</b></td></tr> <tr><td></td></tr> <tr><td></td></tr> <tr><td></td></tr> <tr><td><b>Earth</b></td></tr></tbody></table>");
var results = dom["table tr:nth-child(1) b, table tr:nth-child(5) b"];
foreach (var result in results)
{
Console.WriteLine(result.InnerText);
}
}
}
答案 1 :(得分:0)
var table = doc.DocumentNode.SelectNodes("//table[@bordercolor='#111111'][1]")
.Descendants("tr")
.Select(tr => tr.Descendants("td").Select(td => td.InnerText).ToList())
.Where(x => x.Count() == 5)
.ToList();