10

こんにちは私はJsoupに問題があります。

ページをスクレイプして、たくさんのURLを取得します。それらのいくつかは、、、、のような相対URL"../index.php"です。"../admin""../details.php"

attr("abs:href")は絶対URLを取得するために使用しますが、このリンクは次のようにレンダリングされますwww.domain.com/../admin.php

これがバグかどうか知りたいのですが。

jsoupで実際の絶対パスを取得する方法はありますか?どうすればこれを解決できますか?

でも試しましたが、動作しabsurl("href")ません。

4

2 に答える 2

19

また、abs:hrefまたはabs:src属性を使用することもお勧めします。

String relHref = link.attr("href"); // == "/"
String absHref = link.attr("abs:href"); // "http://jsoup.org/"

これについても説明されています:http: //jsoup.org/cookbook/extracting-data/working-with-urls

于 2013-01-07T23:35:58.160 に答える
9

相対リンクが含まれている場合elementは、次のような絶対リンクを取得しますelement.absUrl("href")

ただし、事前に相対リンクのベースURIを設定する必要があります(たとえば、またはで呼び出しsetBaseUri("http://www.myexample.com")ます)。DocumentElement

ベースのウリが十分に長いことを確認してください!

良い:

element.setBaseUri("http://www.example.com/abc/");
element.attr("href", "../b/here");

戻り値: http://www.example.com/b/here

悪い:

element.setBaseUri("http://www.example.com/abc/");
element.attr("href", "../../b/here");

戻り値: http://www.example.com/../b/here

->相対リンクが長すぎてベースURIになりません!

于 2012-09-03T23:21:03.757 に答える