使用Html Agility Pack进行HTML Scraping

时间:2011-12-01 22:55:28

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

我有一个包含以下代码的HTML

<div id="image_src" style="display: block; "> 
<img id="captcha_img" src="" alt="image" onclick="imageClick(event)" style="cursor:crosshair;">

在这个如何使用HTML Agility Pack检测src?

从另一个问题我尝试使用以下LINQ

var urls = document.DocumentNode.Descendants("img")
                            .Select(e => e.GetAttributeValue("src", null))
                            .Where(s => !String.IsNullOrEmpty(s));

但是我一直在这里得到空指针异常......

我在整个HTML中只有一个图像标记,如上所述

请有人帮帮我..

2 个答案:

答案 0 :(得分:2)

要解决空指针异常,请将每个Linq语句分成它自己的行,如下所示:

 var img = document.DocumentNode.Descendants("img");
 var s = img.Select(e => e.GetAttributeValue("src", null));
 var w = s.Where(s => !String.IsNullOrEmpty(s));    

然后,使用调试器逐步执行每一行,并查看它抛出的位置。

答案 1 :(得分:1)

使用HTML Agility Pack

HtmlAgilityPack.HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);

string imgValue = doc.DocumentNode.SelectSingleNode("//img[@id = \"captcha_img\"]").GetAttributeValue("src", "0");