我正在尝试从网页上抓取数据。通过使用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中可用的子节点,那么我可能会理所当然。
答案 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);
}
}