如何让vb.net从网页添加特定div类中的所有链接?

时间:2014-01-25 03:04:49

标签: html vb.net

这是来自网页的html呈现代码

<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

1 个答案:

答案 0 :(得分:0)

有几种方法可以从xml或html中提取信息。如果html是有效的xml,您可以使用LINQ-to-XML和XPath查询或LINQ查询语法获取特定信息。否则,如果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

最后,您将从list变量中的html页面获取所有链接,随时可以显示。上面的XPath查询表达式 意思是(从右到左阅读):

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