2011-01-19 13 views
1

DOMを使用して、指定されたhtmlソースからすべてのHREF-sを抽出しました。私はこのようなリンクがある場合:しかし、問題がありますHREFを抽出しようとするとDOMの問題が発生する

<LINK rel="alternate" TYPE="application/rss+xml" TITLE="ES: Glavni RSS feed" HREF="/rss.xml"> 

をその「/rss.xmlは」ただアンカーテキストであるが、その後、「HREF」要素は、/rss.xmlとして提示されます。 Chromeのページソースビューからそのリンクをクリックすると、実際のリンクが開きます。

アンカーテキストではなく、href-s LINKを利用したいと思います。どうか私はドムでそれをすることができますか?

+0

? – drudge

答えて

0

document.location.hrefを使用して、現在のURLを取得し、あなたの例から得られた結果を追加することができます。それはあなたにリンクの絶対パスを与えるはずです。

1

link要素を取得し、hrefプロパティを取得します。あなたがIDを使用していたと仮定し、

<link id="myLink" rel="alternate" href="/rss.xml" /> 

var link = document.getElementById("myLink"); 
link.href; // http://www.example.com/rss.xml 
1

"HREF" 要素は、はい、それは

ものの属性の値である/rss.xml

として提示されます"/rss.xml"は単にアンカーテキストです。

番号<link>要素にはアンカーテキストがありません。次の例では、 'bar'はアンカーテキストです。 Chromeのページのソースビューからそのリンクをクリックする

<a href="/rss.xml">bar</a> 

、実際のリンクが開かれます。

ブラウザは相対URIを解決する方法を知っています。

アンカーテキストではなく、href-s LINKを利用したいと思います。どうか私はドムでそれをすることができますか?

URIを使用してURIを解決することはできません。 DOMを使用して属性の値を取得し、それ以外のものを使用して相対URIとして解決します。

記事Using and interpreting relative URLsは、どのように動作するのかを説明し、それらの解決に役立つツールがあります。

Perlであなたが相対URIがに相対的であることをベースURIを知っている(リンクを含むドキュメントの通常のURIが、ベース要素のようなものがそれをオフに投げることができる)必要

あなたは可能性があります

#!/usr/bin/perl 

use strict; 
use warnings; 
use URI; 

my $str = '/rss.xml'; 
my $base_uri = 'http://example.com/page/with/link/to/rss.xml'; 
print URI->new_abs($str, $base_uri); 

与える:あなたはDOMにアクセスするために使用している何

http://example.com/rss.xml 
関連する問題