как получить фактические ссылки, направленные hrefs - PullRequest
0 голосов
/ 13 ноября 2011

Я анализирую html-код веб-страницы и собираю все ссылки, упомянутые как hrefs, используя regex, но некоторые сайты, например wikipedia, упоминают определенные hrefs в html-коде в качестве перефразирования, например:

в коде написано:

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 ]

2 голосов
/ 13 ноября 2011

Они не перефразируют, это идентификаторы фрагментов.# вводит идентификатор фрагмента страницы.Таким образом, вы указали относительный URL для текущей страницы с другим идентификатором фрагмента.На странице Википедии есть еще информация об URL и 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 (обратите внимание на отсутствие протокола)
    =>
    /4571388/kak-poluchit-fakticheskie-ssylki-napravlennye-hrefs
    (да, действительно )

... и т. Д. И т. Д.

0 голосов
/ 13 ноября 2011

В википедии, которая просто ссылается на часть на странице (вы находитесь в данный момент), браузер просто прокрутит вниз до якоря для вас.хотя на некоторых сайтах вроде твиттера.моя учетная запись, например, http://twitter.com/#!/msundbhttp://twitter.com/msundb, которая пересылает его), на самом деле является просто корнем twitter.com.все после #!есть, чтобы сказать javascript на странице, какой контент он должен загрузить.У него даже есть ссылка rel canonical, установленная на "/", которая сообщает Google, что это стартовая страница (хотя это не так).

То, как вы должны интерпретировать ссылки, зависит от того, что вы с ними делаете.

...