【问题标题】:Getting href from Bing using HtmlAgilityPack使用 HtmlAgilityPack 从 Bing 获取 href
【发布时间】:2017-06-25 09:22:02
【问题描述】:

使用此搜索 URL 进行必应:

http://www.bing.com/images/search?scope=images&sp=-1&pq=ferrari&sc=9-3&sk=&cvid=E471F1335E6A48C897DB5CEE745F51E1&q=ferrari&qft=+filterui:imagesize-large&FORM=R5IR3%22

我需要从类中获取,并且仅从类“iusc”中获取 bing 在搜索时返回的每张图片的 href 属性。

我使用的代码库是这样的:

For Each link As HtmlAgilityPack.HtmlNode In htmlDoc.DocumentNode.SelectNodes("//a[@href]")
debug.Print(link.GetAttributeValue("href", ""))
Next

但它返回的是“murl”属性,而不是“href”。

那么如何获取href呢?

【问题讨论】:

  • 如果您有新问题,请ask。不要用新问题更新您现有的问题。这只会造成噪音和混乱。

标签: html vb.net html-agility-pack bing


【解决方案1】:

问题在于 xpath 表达式以及从 Web 加载文档的方式会导致文档为空。试试这个:

Dim website As New HtmlWeb()
Dim doc As HtmlDocument = website.Load(url)
Dim links = doc.DocumentNode.SelectNodes("//a[contains(@class,'iusc')]")
For Each link In links
    Dim href As String = link.GetAttributeValue("href", "")
    Debug.Print(href)
Next

考虑到 Debug.Print() 根据您配置 VS 的方式将输出发送到不同的窗口。如果您没有看到任何内容,请调试并检查 href 值。

【讨论】:

  • 非常感谢您的回复。 "//a[@href]" 和 "//a/@href" 给出相同的结果,即带有 "murl" 属性的列表。并且使用 "//a[contains(@class,'iusc')]" 会出错...我迷路了。
  • “对象引用未设置为对象的实例”。在这一行: For Each link As HtmlAgilityPack.HtmlNode In htmlDoc.DocumentNode.SelectNodes("//a[contains(@class,""iusc"")]")
  • 我已经编辑了我的答案。这似乎可以直接从网络获取页面。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-26
  • 2016-04-21
  • 1970-01-01
  • 2012-10-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多