【问题标题】:Visual Basic & HTML Agility PackVisual Basic & HTML 敏捷包
【发布时间】:2013-06-21 15:34:04
【问题描述】:

我正在尝试从 yahoo 中提取页面标题

http://finance.yahoo.com/q?s=plug

我向用户询问符号是创建网址:http://finance.yahoo.com/q?s=plug

当我加载同一页面的本地 .html 时,该程序运行良好...

这是我的代码:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    Dim symbol As String, htmldoc As New HtmlDocument
    symbol = TextBox3.Text
    htmldoc.Load("http://finance.yahoo.com/q?s=plug")
    Dim items = htmldoc.DocumentNode.SelectNodes("//head/title").Select(Function(node) New KeyValuePair(Of String, String)(node.InnerText, node.InnerText))

    For Each item As KeyValuePair(Of String, String) In items
        Console.WriteLine(item.Key)
        Console.WriteLine(item.Value)
    Next

End Sub

有人知道我怎样才能完成这项工作吗?我最终想拉股价等等......

我也很想学习一种更简单的方法来完成我想要完成的事情。而不是使用 KeyValuePair 等...只是我终于开始研究另一个 SO 问题。

谢谢。

【问题讨论】:

  • 还有谁投了反对票,我过去一周一直在研究这个,我终于走到了这一步!
  • 您通常应该说明问题到底是什么以及您收到的错误。你基本上会问,“这是我的代码,我该如何让它工作?”

标签: vb.net visual-studio-2012 html-agility-pack


【解决方案1】:

当拉取一个 web url 时,你应该使用 HtmlWeb 类来加载文档。 HtmlDocument.Load 方法只能从本地文件(或流)中读取。您可能会看到“无法从 url 读取”或“不支持 url”这样的错误。

Dim url = "http://finance.yahoo.com/q?s=plug"
Dim web = new HtmlWeb
Dim doc = web.Load(url)
Dim titleNode = doc.DocumentNode.SelectSingleNode("/html/head/title")
Dim title As String
If titleNode IsNot Nothing Then
    title = titleNode.InnerText
End If

【讨论】:

    猜你喜欢
    • 2011-01-26
    • 1970-01-01
    • 2016-06-01
    • 2017-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多