0

我是 HtmlAgilityPack 的新手,对我来说它是如何工作的有点不清楚。让我们说一下何时编写类似这段代码的内容

Dim url1 As String = "http://www.bing.com/search?q=Verizon
Dim hw As New HtmlWeb()
Dim doc As HtmlDocument = hw.Load(url1)
For Each link As HtmlNode In doc.DocumentNode.SelectNodes("//a[@href]")

Dim att As HtmlAttribute = link.Attributes("href")
Response.Write(att.Value)

Next
  1. 那么什么时候SelectNodes//a[@href]意味着它只会查看ahref标签?
  2. 如果是这样,我怎样才能让它考虑循环中的其他标签,例如<li>, <h3>, <div>. 像这样正确//li[@class='wrap']|//div[@class='last']吗??
  3. 如何获取和呈现这些标签之间的数据。

另一个问题是,假设我需要从该 url 中抓取一个电话号码,该号码可能不可用或可能不在任何定义的标签中。我可以使用任何可靠的方法来获取相关搜索词的电话号码吗?有什么建议或想法吗?

4

1 回答 1

0

实际上,当前的 xpath 会查看具有 href 参数的锚标记。我建议您阅读 xpath 语法(例如在http://www.w3schools.com/xpath/xpath_syntax.asp

要选择其他节点,您需要更改 xpath 以选择这些标签,例如:

doc.DocumentNode.SelectNodes("//li")

获取所有 li 节点等。

可以使用所选文档节点的 InnerHtml 访问标签中的数据(在您的示例中为 link.InnerHtml)

自动抓取电话号码真的很痛苦,每个国家使用不同的长度,并且有许多不同的格式来写一个号码:+12(0)3456 +123456 00123456 +12(0)34-56 都是相同的有效电话号码...请参阅检查字符串 C# 中是否有电话号码以获得简单的解决方案

GL&HF!

于 2013-01-16T16:56:32.483 回答