Windows手机网络抓取

时间:2013-12-14 04:54:51

标签: c# web-scraping html-agility-pack

我正在尝试从网页上抓取数据。通过使用HtmlAgility包,我可以加载我想要显示的特定div。但是在这个div节点内部还有其他子/子节点。如何提取每个子节点的innerhtml?这就是我所做的:

var webget = new HtmlWeb();
var doc = webget.Load("http://www.dmp.gov.bd/application/index/pressdetails/press_159");

HtmlNode node = doc.DocumentNode.SelectSingleNode("//div[@class='span8 inner_mess']");

这里我指的是一个特定的网页。它总是不一样,但它确认div是相同的,并且在div内部将有不同的子节点,具体取决于URL。

如果我可以通过代码以某种方式找出该特定div中可用的子节点,那么我可能会理所当然。

1 个答案:

答案 0 :(得分:3)

您想以递归方式跟踪节点吗? (我不知道这是否有效,因为我只会说英语)。你可以添加缩进和回车来实现它。

private void button1_Click(object sender, EventArgs e)
{
    var webget = new HtmlWeb();
    var doc = webget.Load("http://www.dmp.gov.bd/application/index/pressdetails/press_159");

    HtmlNode node = doc.DocumentNode.SelectSingleNode("//div[@class='span8 inner_mess']");

    TraverseNodes(node.ChildNodes);
}

private void TraverseNodes(HtmlNodeCollection nodes)
{
    foreach (HtmlNode node in nodes)
    {
        textBox1.Text += node.InnerText;

        TraverseNodes(node.ChildNodes);
    }
}