2014-01-25 58 views
0

这就是HTML代码的网页渲染代码看起来像如何让vb.net从网页中添加特定div类中的所有链接?

<div class="mygallery_entry"> 
<div class="mygallery_inner"> 
<a title="img1" class="gallery_image" href="http://image.com/29.html"><img src="/mini/1.jpg" alt="" height="208" width="333" border="0"></a> 
</div> 
<div class="mygallery_inner"> 
<a title="img2" class="gallery_image" href="http://image.com/12.html"><img src="/mini/2.jpg" alt="" height="208" width="333" border="0"></a> 
</div> 
<div class="mygallery_inner"> 
<a title="img3" class="gallery_image" href="http://image.com/59.html"><img src="/mini/3.jpg" alt="" height="208" width="333" border="0"></a> 
</div> 
</div> 

我的输出变为列表框,它应该是这样的:

http://image.com/29.html 
http://image.com/12.html 
http://image.com/59.html 

回答

0

有几种方法来提取XML信息或者html。如果html是一个有效的xml,那么可以使用带有XPath查询或LINQ查询语法的LINQ-to-XML获取特定信息。否则,如果html不是有效的XML并且无法解析/加载到XDocument,则应该查看Html Agility Pack。下面是使用XPath查询得到这三个图像链接(html页面需要首先下载并存储为文件或作为字符串)的示例。

Imports System.Xml.XPath 
.... 
Dim doc = XDocument.Parse(htmlString) 
'if you want to load from html file instead of string, use XDocument.Load as follow 
'Dim doc = XDocument.Load(pathToHtmlFile) 
Dim list = New List(Of String)() 
For Each a As XElement In doc.XPathSelectElements("//div[@class='mygallery_inner']/a[@href]") 
    list.Add(a.Attribute("href").Value) 
Next 

最终你会得到来自HTML页面中的所有链接list变量,准备在任何你想要的显示。上述 装置XPath查询表达式(从右到左读):

  1. /a[@href]:选择元件<a>具有href属性,并且是直接子..
  2. //div[@class='mygallery_inner']:具有class属性值的<div>元素= mygallery_inner并且是根元素的后代(不一定是直接的孩子)
相关问题