0

リンクFASTERから画像を取得するプラグインまたは単純なコードを探しています。http://simplehtmldom.sourceforge.net/を使用 して、特定のリンクから最初の 3 つの画像を抽出しています。

simplehtmldom は非常に遅く、私のサイトの多くのユーザーがそれを問題として報告しています。

間違っている場合は訂正してください。このプラグインは、渡した URL から完全な html コードを取得するのに時間がかかり、img タグを検索していると思います。

誰かが私が試すことができるhtmlコードまたは代替プラグインをフェッチする速度を即興するテクニックを提案してください?

私が考えているのは、最初の 3 つの img タグが見つかるまで html コードを取得してから、コード取得プロセスを強制終了するようなものですか? 物事が速くなるように。

PHPで可能かどうかはわかりませんが、jqueryを使用して設計するのに苦労しています。

ご協力いただきありがとうございます !

4

1 に答える 1

3

クロスサイト スクリプティング ルールにより、jQuery/JS でこのようなことを行うことができなくなります (コンテンツを取得するすべてのドメインを制御しない限り)。あなたがやっていることは、いずれにせよ超高速ではありませんが、DOMDocument と組み合わせて使用​​して独自のものを書いてみてください...file_get_content() DOMDocumentメソッドは、simplehtmldom のメソッドよりも高速かもしれません。getElementsByTagNamefind()

正規表現のアプローチを試すこともできます。真の DOM パーサーほど確実ではありませんが、おそらく高速になるでしょう...次のようなものです。

$html = file_get_contents($url);
preg_match_all("/<img[^']*?src=\"([^']*?)\"[^']*?>/", $html, $arr, PREG_PATTERN_ORDER);

大きなファイル全体を読み取らないようにする場合は、file_get_contents()呼び出しとサブルーチンをスキップしてfopen(); while(feof())、各行がリモートサーバーから読み取られた後に画像を確認することもできます。ただし、このアプローチを採用する場合はregex、画像のコードが数行にまたがって簡単に壊れてしまう可能性があるため、最新の行だけでなく、バ​​ッファリングされた文字列全体を ing していることを確認してください。

HTML の実際の変動性はregex、せいぜい不完全な解決策になることに注意してください。ただし、速度が主な懸念事項である場合は、最適な選択肢となる可能性があります。

于 2013-01-25T17:42:42.317 に答える