2

やりたいこと:シンプルな HTML DOM を使用してページからすべてのリンクをスケープし、完全なリンクを取得するように注意します (つまりhttp://、アドレスの最後まで)。

私の問題:/wiki/Cell_wallの代わりに のようなリンクが表示されますhttp://www.wikipedia.com/wiki/Cell_wall

その他の例: URL: をスクレイピングすると、 、 、 などのhttp://en.wikipedia.org/wiki/Leafリンクが取得されます。または、スクレイピングを行っている場合は、 のようなリンクを取得します。/wiki/Cataphyll//en.wikipedia.org/http://php.net/manual/en/function.strpos.phpfunction.strripos.php

実際の完全な URL を作成するために非常に多くの異なる手法を試しましたが、考えられるケースが非常に多く、すべてのベースをカバーする方法について完全に途方に暮れています。

しかし、以前にこの問題を抱えたことがある人はたくさんいると思います。

PSこの質問は、 local を処理するだけにほぼ縮小できると思いますhrefが、上記のように//en.wikipedia.org/、完全なURLではなく、まだローカルではありません。

4

4 に答える 4

1

これがあなたが探しているものだと思います。それは古いプロジェクトで私のために働きました。

http://www.electrictoolbox.com/php-resolve-relative-urls-absolute/

于 2012-12-06T00:48:12.327 に答える
1

相対 URL を絶対 URL に変換するライブラリが必要です。URL To Absoluteが人気のようです。次に、次のようにします。

require('url_to_absolute.php');

foreach($doc->find('a[href]') as $a){
  echo url_to_absolute('http://en.wikipedia.org/wiki/Leaf', $a->href) . "\n";
}

ライブラリのリストについては、PHP: 相対 URL を解決する方法を参照してください。

于 2012-12-06T02:50:25.163 に答える
0

これがあなたが探しているものであるかどうかはわかりませんが、これにより、実行元のページの完全なURLがわかります。

window.location.href

それが役に立てば幸い。

于 2012-12-03T07:23:35.660 に答える
0

わかりました、皆さんのコメントに感謝します。

解決策は、正規表現を使用して特定の URL の webroot を見つけ、ローカル アドレスをこれに追加することだと思います。

トリッキーな部分: サブドメインを含むすべてのドメインで機能する正規表現ステートメントを設計する...

于 2012-12-03T13:48:16.470 に答える