當用Mojo::DOM
(或任何其他框架)解析網頁時,拉取可能相對或絕對的資源地址相當常見。有沒有一種快捷方式將這種資源地址轉換爲絕對URL?Mojo :: DOM快捷方式獲取資源的絕對URL?
以下mojo
命令拉所有的樣式上mojolicio.us:
$ mojo get http://mojolicio.us "link[rel=stylesheet]" attr href
/mojo/prettify/prettify-mojo-light.css
/css/index.css
而下面的腳本不相同,而且還採用了URI
的資源轉化爲絕對URL。
use strict;
use warnings;
use Mojo::UserAgent;
use URI;
my $url = 'http://mojolicio.us';
my $ua = Mojo::UserAgent->new;
my $dom = $ua->get($url)->res->dom;
for my $csshref ($dom->find('link[rel=stylesheet]')->attr('href')->each) {
my $cssurl = URI->new($csshref)->abs($url);
print "$cssurl\n";
}
輸出:
http://mojolicio.us/mojo/prettify/prettify-mojo-light.css
http://mojolicio.us/css/index.css
很顯然,在這方面相對URL應該使用加載DOM的URL取得絕對的。但是,我不知道如何獲取資源絕對URL,除了自己編寫代碼。
有Mojo::URL #to_abs
在Mojolicious
。但是,我不知道這是否會以某種方式與Mojo::DOM
進行整合,並且本身會佔用比URI
更多的代碼。
我的理想的解決辦法是,如果像下面分別從兩個腳本和命令行可能的,但尋找任何相關的見解使用魔解析:
mojo get http://mojolicio.us "link[rel=stylesheet]" attr href to_abs