Соскребание HTML с использованием Html Agility Pack - PullRequest
0 голосов
/ 02 декабря 2011

У меня есть HTML, который содержит следующий код

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

В этом, как я могу обнаружить src, используя HTML Agility Pack?

Из другого вопроса я пытался использовать следующий LINQ

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

но я продолжаю получать исключение нулевого указателя здесь ...

У меня только один тег изображения во всем HTML, как указано выше

Может кто-нибудь помочь мне, пожалуйста ..

Ответы [ 2 ]

2 голосов
/ 02 декабря 2011

Чтобы устранить неполадку с нулевым указателем, разбейте каждый оператор 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 голос
/ 02 декабря 2011

Использование HTML Agility Pack

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

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