【问题标题】:how to grab actual links directed by hrefs如何获取由 hrefs 指向的实际链接
【发布时间】:2011-12-27 23:58:24
【问题描述】:

我正在解析网页的 html 代码并使用正则表达式获取所有提到的链接作为 hrefs,但是某些网站(例如维基百科)在 html 代码中提到某些 hrefs 例如:

代码说:

href="#cite_note-Types_of_Test_Item_Formats-

但链接实际上是: http://en.wikipedia.org/wiki/Test_(assessment)#cite_note-Types_of_Test_Item_Formats-15

如何仅使用网页源访问这些链接?

编辑:用java编码

任何帮助表示赞赏

【问题讨论】:

  • 你用什么语言解析
  • 锚点 (#) 指的是当前 URL...只要不涉及 javascript,这应该相当容易。
  • 对于 JS,您可以使用 window.location 并在需要时附加 href。 -- 你用什么语言解析 html ?

标签: java html parsing href


【解决方案1】:

它们不是释义,它们是片段标识符。 # 引入了页面片段的标识符。因此,您引用的是当前页面的相对 URL,具有不同的片段标识符。 Wikipedia page about URLs 及其链接的 RFC 中还有更多内容。

请注意,片段不一定只单独显示。它们可以是任何 URL,相对的或绝对的。如果要处理 URL,则必须了解如何解析相对 URL。例如,如果我们假设我们在页面http://example.com/foo/bar.html,那么:

  • #frag
    解析为
    http://example.com/foo/bar.html#frag
  • ../alt.html
    =>
    http://example.com/foo/alt.html
  • /bonzo/nifty#stuff
    =>
    http://example.com/bonzo/nifty#stuff
  • //stackoverflow.com/questions/8110960/8110987#8110987(注意缺少协议)
    =>
    http://stackoverflow.com/questions/8110960/8110987#8110987
    (是的,really

...等等等等

【讨论】:

    【解决方案2】:

    在维基百科上,它只是指页面上的一部分(您当前正在浏览),浏览器只会向下滚动到您的锚点。 但是在某些网站上,例如 twitter。例如我的帐户 http://twitter.com/#!/msundb(和转发给它的http://twitter.com/msundb) 实际上只是 twitter.com 的根。 # 之后的所有内容!是否可以告诉页面上的 javascript 它应该加载哪些内容。它甚至将链接 rel canonical 设置为“/”,告诉 google 它是起始页(尽管它不是)。

    因此,您应该如何解释这些链接取决于您对它们做什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-18
      • 1970-01-01
      • 2018-08-04
      • 1970-01-01
      • 2010-10-18
      • 1970-01-01
      • 1970-01-01
      • 2013-08-05
      相关资源
      最近更新 更多