【问题标题】:Web scraping a telephone number网络抓取电话号码
【发布时间】:2013-01-16 16:38:42
【问题描述】:

我是 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 中抓取电话号码,该号码可能不可用或可能不在任何定义的标签中。我可以使用任何可靠的方法来获取相关搜索词的电话号码吗?有什么建议或想法吗?

【问题讨论】:

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


    【解决方案1】:

    确实,当前的 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 都一样有效的电话号码...有关简单的解决方案,请参阅Check if there is phone number in string C#

    GL&HF!

    【讨论】:

      猜你喜欢
      • 2018-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多