如何使用WebRequest从VB.net中的网页获取特定标记的值

时间:2013-10-01 14:12:27

标签: vb.net

所以基本上我想要接收网页的数据,但只接收特定的类名元素或标签名称值。

<div>
    <div class="abc" style="margin-top:-187px;"><strong>1111</strong></div>
    <div class="abc" style="margin-top:-150px;"><strong>2222</strong></div>
    <div class="abc" style="margin-top:-114px;"><strong>3333</strong></div>
    <div class="abc" style="margin-top:-77px;"><strong>4444</strong></div>
    <div class="abc" style="margin-top:-42px;"><strong>5555</strong></div>
</div>

从上面我想要标签名称的所有值或者abc类的元素。 所以我的输出应该是这样的

  

1111
  2222
  3333
  4444
  5555

我创建了以下

Dim inStream As StreamReader
Dim request As WebRequest = WebRequest.Create("url here")
Dim response As WebResponse = request.GetResponse
inStream = New StreamReader(response.GetResponseStream())
Dim str As String = inStream.ReadToEnd()
Textbox1.Text = str

但是你可以看到它是整个页面的获取,但我只想要特定的标签或类名元素。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以使用Html Agility Pack来解析HTML。

示例: (应该足以让您入门)

Dim html = <html>
                <div>
                    <div class="abc" style="margin-top:-187px;"><strong>1111</strong></div>
                    <div class="abc" style="margin-top:-150px;"><strong>2222</strong></div>
                    <div class="abc" style="margin-top:-114px;"><strong>3333</strong></div>
                    <div class="abc" style="margin-top:-77px;"><strong>4444</strong></div>
                    <div class="abc" style="margin-top:-42px;"><strong>5555</strong></div>
                </div>
            </html>

Dim htmlDoc = new HtmlAgilityPack.HtmlDocument()

htmlDoc.LoadHtml(html.ToString())

For Each node In htmlDoc.DocumentNode.SelectNodes("//div[@class='abc']//strong")
    Console.WriteLine(node.InnerText.ToString())
Next

<强>结果

  

1111
  2222
  3333
  4444
  5555