使用htmlagility包废弃表的行项目

时间:2014-02-09 07:41:54

标签: c# html-agility-pack

我正在制作程序,它将显示表格中的文字。结构就像那样。 有两个表,但我想从第二个表中获取文本。 enter image description here

我的表数据如下所示:

enter image description here

我想显示第二个表的每一行的前三列。 为此我尝试了这样。

HtmlWeb web = new HtmlWeb();

HtmlAgilityPack.HtmlDocument doc = web.Load("http://www.banglaeye.com/baby-names/index.php");
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//div[@class='col_box']/table[2]/tr/td");

try
{
    foreach (HtmlNode n in nodes)
    {
        if (k != 0)
        {
            link = n.InnerHtml;
            my_link.Add(link);
            MessageBox.Show(link);               
        }
        k++;
    }
}
catch (NullReferenceException)
{
    MessageBox.Show("No link found");
}

我发现此URL执行http post方法。但是Html Agility包不提供任何Http post方法。那怎么能实现我的目标呢?

1 个答案:

答案 0 :(得分:1)

在浏览器用户点击“搜索”按钮之前,不会填充要抓取其内容的表格。如果有人要正常导航到该URL,则在按下按钮之前,他们不会在表中看到任何条目。这就是HTMLAgilityPack只能看到第一行的原因。单击该按钮,执行HTTP POST:

letter=All&gender_id=0&origin_id=0&submit=search

您的程序必须执行此请求,然后使用HtmlDocument而不是doc.LoadHtml()将结果加载到doc.Load()

以下是一些其他Stack Overflow问题,您可以参考这些问题来完成这两项任务: