2012-01-20 2 views
0

Я разрабатываю приложение, в котором я должен получать данные с веб-сайта. Формат веб-сайта:Извлечь данные с веб-сайта с помощью HtmlAgilityPack

<div id="id1" class="class1"> 
    <ol class="cls_ol"> 
    <li> 
     <div class="class2">Content 1</div> 
     <div class="cls_img"> 
       *** Code for some image *** 
     </div> 
     Content 2 
    </li> 
    <li> *** Same like above <li> *** </li> 
    <li> *** Same like above <li> *** </li> 
    </ol> 
</div> 

Я использую код для извлечения этого ...

protected void Button1_Click(object sender, EventArgs e) 
{ 
    var obj = new HtmlWeb(); 
    var document = obj.Load(" ** url of a website ** "); 

    var bold = document.DocumentNode.SelectNodes("//div[@class='class1']"); 

    foreach (var i in bold) 
    { 
     Response.Write(i.InnerHtml); 
    } 

Но, проблема с моим кодом это, он также извлекает изображения <div class="cls_img"></div>. Мне не нужен этот образ. Итак, как получить все содержимое <div id="id1" class="class1"> без получения изображения с <div class="cls_img">.

ответ

0

Прокрутите узлы и найдите узел с атрибутом соответствия класса = "cls_img" и удалите этот узел.

node.ParentNode.RemoveChild(node); 
1

Шаг 1 - выбрать и удалить изображения внутри <div class="cls_img"> внутри <div class="class1"> тега:

var images = document.DocumentNode.SelectNodes(
     "//div[@class='class1']//*//div[@class='cls_img']//img" 
); 

    // note that if no nodes found "images" variable will hold a null value 
    foreach (var image in images) 
    { 
     image.Remove(); 
    } 

Шаг 2 - выберите <div class="class1"> элементы (вы уже сделали это) - теперь без того изображений:

var bold = document.DocumentNode.SelectNodes("//div[@class='class1']"); 
    foreach (var node in bold) 
    { 
     Console.Write(node.InnerHtml); 
    } 
+0

Да ... это работает. Спасибо, за вашу помощь. –

+0

Эй! Алекс, ты можешь мне помочь. На самом деле я новичок в HtmlAgilityPact. Я хочу это узнать. Я хочу изучить его классы, такие как класс HtmlNode, класс HtmlNodeCollection и т. Д. Итак, скажите мне источник (например, любой сайт или электронную книгу), откуда я могу это узнать. –

+0

@ Сагар Кадам, насколько я знаю, у него еще нет документации (вместо этого вам предлагается посетить их [вкладку «Обсуждения») (http://htmlagilitypack.codeplex.com/discussions), чтобы задавать вопросы). Также здесь есть много примеров, в [stackoverflow] (http://stackoverflow.com/questions/tagged/html-agility-pack). Также, когда вы решили, что ответ наиболее полезен для вас, отметьте его как принятый ответ, нажав на рамку в левой части ответа. – Alex

Смежные вопросы