如何获取hrefs指向的实际链接

时间:2011-11-13 10:34:16

标签: java html parsing href

我正在解析网页的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编码

感谢任何帮助

2 个答案:

答案 0 :(得分:2)

它们不是释义,它们是片段标识符。 #引入了页面片段的标识符。所以你引用的是当前页面的相对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

......等等。

答案 1 :(得分:0)

在维基百科上,它只是引用页面上的一个部分(您当前正在使用),浏览器将向您滚动到锚点。 但是在某些网站上,比如推特。以我的帐户为例 http://twitter.com/#!/msundb(以及转发给它的http://twitter.com/msundb) 实际上只是twitter.com的根源。 #之后的一切!是在那里告诉页面上的javascript它应该加载什么内容。它甚至将链接rel规范设置为" /"告诉谷歌它是起始页(虽然它不是)。

所以你应该如何解释链接取决于你在做什么。