2012-04-30 5 views
0

У меня проблема, я не могу правильно использовать пакет HTTP AGILITY PACK, например, желая получить адрес изображения, содержащегося в «стиле», мне хотелось бы знать, подсказывает ли кто-нибудь мне использовать xpath.Http agility pack xpath

КОД HTML

<TABLE id=uezszu_24 class="uiGrid fbPhotosGrid" cellSpacing=0 cellPadding=0> 
<TBODY> 
    <TR> 
    <TD class="vTop"> 
     <DIV class=Wrapper> 
     <A class="uiMediaThumb uiScrollableThumb uiMediaThumbHuge" href="www.cccc.com/index.php" 
     name=43563463 rel=theater aria-label="photo" ajaxify="dsgdgbdfgr45y6ghd"> 
     <I style="BACKGROUND-IMAGE: url(http://www.fressdgf.com/image.jpg)"></I> 
     </A> 
     </DIV> 
    </TD> 
    </TR> 
</TBODY> 
</TABLE> 

КОД VB

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 

    Dim site As HtmlAgilityPack.HtmlWeb = New HtmlWeb() 
    Dim document As HtmlAgilityPack.HtmlDocument = site.Load("https://www.site.com") 
    For Each table As HtmlNode In document.DocumentNode.SelectNodes("//tr") 

     ListBox1.Items.Add(table.InnerText) 

    Next 
End Sub 

Отредактировано: Код отступов улучшилось

+0

Вы хотите, чтобы содержимое атрибута стиля? Или фактический uri в атрибуте стиля? Если последнее, вам нужно сначала извлечь атрибут из узла. Затем самостоятельно разберите блок стиля. HTML Agility Pack не анализирует его для вас, он просто видит тест. Здесь может работать регулярное выражение. 'background-image \ s *: \ s * url \ s * \ (\ s * (? [^)] +))', вероятно, сделает трюк. – jessehouwing

ответ

0

Я предлагаю вам использовать Linq вместо XPath. Если вы хотите, чтобы получить фоновое изображение узла внутри вы можете сделать это:

For Each tableRow As HtmlNode In document.DocumentNode.SelectNodes("//tr") 
    Dim italicNode As HtmlNode = tableRow.DescendantNodes().Where(Function(n) n.Name = "i") 
    Dim styleValue As String = italicNode.GetAttributeValue("style",String.Empty) 
    ListBox1.Items.Add(styleValue) 
Next 

Я надеюсь, что это помогает вам

+0

Потомки («i») даже лучше. Где (функция (n) n.Name = "i". – jessehouwing