2010-12-02 17 views
14

可能性の重複:
How to parse and process HTML with PHP?PHP HTML DOMパーサ

私は、PHP用のHTML DOMパーサに探しています。私はPHP Simple HTML DOM Parserを見つけました。私が見なければならないものはありますか?

+0

は、なぜあなたは、あなたが何かを必要とすると思いますか?それが仕事をする場合は、それを使用してください。 :) – casablanca

+0

そのまだ偉大なリソースゴードン、1 – RobertPitt

答えて

16

で見ることができます。シンプルなHTML文書は大丈夫ですが、組み込みDOMパーザよりもmagnitude slowerの順です。

$dom = new DOMDocument(); 
@$dom->loadHTML($html); 
$x = new DOMXPath($dom); 

foreach($x->query("//a") as $node) 
{ 
    $data['dom']['href'][] = $node->getAttribute("href"); 
} 

これを使用してください。

+0

を作るための方法があるが、 'ノードリストの代わりにノードを返すquery'?たとえば、ページにはh1タグが1つしかありません。 nodeValueを取得したいが、ノードリストを反復処理する必要があるとは思わない。 – StackOverflowNewbie

+1

'$ node [0]'を使ってリストの最初のノードを取得できるはずです。または反復して壊すだけです。私は反復して壊すだけです。クエリが何も返さない場合、私はそのようなエラーは発生しません。 –

1

は最近、私はまたganonを見つけましたが、一般的にPHP Simple HTML DOM Parserは最高です!

+1

複数のページをクロールしようとすると、単純なHTML DOMパーサーのチョークが発生します。レベル1:300のリンクを取得する(例:リスティングから)level2:各リンクに行き、詳細でページを取得し、要素を取得する。あなたが得るすべては(サーバーの種類に応じて)リセットエラーのコレクションです - プラスそれは非常に遅い – Jeffz

+0

ガノンだけ負荷2の私の欲求の要素とするとき、私のコンピュータが絞首刑に単純なHTML DOMパーサーを実行しようとしています! – zhilevan

+0

ganonがPHPの組み込みDOMとSimple HTML DOM Parserよりもはるかに遅いことがわかりました。さらに、シンプルなHTML DOMはメモリリークの影響を受けているようで、割り当てられたオブジェクトを手動でクリーニングまたは再利用する必要があります。 – jahackbeth

関連する問題