web-dev-qa-db-ja.com

PHP CSSセレクターライブラリ?

CSSセレクターを使用してXHTMLドキュメントをクエリできるPHPクラス/ライブラリはありますか?何らかの方法でCSSセレクターを使用できる場合は、非常に簡単にアクセスできるデータのページをスクレイプする必要があります( jQueryは私を台無しにしました!)何かアイデアはありますか?

31
Wilco

さらにグーグルした後(最初の結果はあまり役に立ちませんでした)、他のいくつかと一緒に、実際にはこれのためのZendFrameworkライブラリがあるようです:

42
Wilco

XPathは、XML(およびXHTML)ノードにアクセスするためのかなり標準的な方法であり、CSSよりもはるかに高い精度を提供します。

9
nickf
6
mario

素晴らしいものはsymfony2のコンポーネントです CssSelector\Parserはじめに 。 CSSセレクターをXPath式に変換します。見てください=)

ソースコード

6

jQuery の場合、最も興味深いユーザーはjQueryのPHPへのポート、つまり- phpQuery。ライブラリのほぼすべてのセクションが移植されています。さらに、WebBrowserプラグインが含まれており、サイト全体のパス/プロセスをWebスクレイピングするために使用できます(ログイン後に利用可能なデータにアクセスするなど)。サーバー上のWebブラウザーをシミュレートするだけです(イベントとCookieも)。最新バージョンでは、XML名前空間およびCSS3 "|"セレクター

5
Tobiasz Cudnik

最終的に PHP Query Lite を使用しました。これは非常にシンプルで、必要なものがすべて揃っています。

3
Mirko

ドキュメントの解析には [〜#〜] dom [〜#〜] を使用します。タグ名(この例では「div」)がわかっている場合、これで問題を簡単に解決できます。

 $doc = new DOMDocument();
 $doc->loadHTML($html);

 $elements = $doc->getElementsByTagName("div");
 foreach ($elements as $e){
  if ($e->getAttribute("class")!="someclass") continue;

  //its a div.classname
 }

DOMでドキュメントのすべての要素を一度に取得できるかどうかはわかりません...ツリートラバーサルを実行する必要がある場合があります。

2
John

私はMootoolsCSSセレクターエンジンに基づいて私のものを書きました http://selectors.svn.exyks.org/ 。 simplexml拡張機能に依存しています(したがって、読み取り専用です)

1
131