32

CSS セレクターを使用して XHTML ドキュメントをクエリできるようにする PHP クラス/ライブラリはありますか? どうにかして CSS セレクターを使用できれば、非常に簡単にアクセスできるデータを得るためにいくつかのページをスクレイピングする必要があります (jQuery は私を甘やかしてしまいました!)。何か案は?

4

8 に答える 8

44

さらにグーグルで検索した後(最初の結果はあまり役に立ちませんでした)、実際にはこれ用の Zend Framework ライブラリが他にもいくつかあるようです。

于 2008-11-04T02:19:38.053 に答える
9

XPath は、XML (および XHTML) ノードにアクセスするかなり標準的な方法であり、CSS よりもはるかに正確です。

于 2008-11-04T02:23:14.660 に答える
6

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

ソースコード

于 2010-07-12T09:13:54.767 に答える
6

別のもの:
http://querypath.org/

于 2010-06-20T00:58:42.047 に答える
5

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

于 2009-01-22T16:00:48.227 に答える
3

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

于 2011-02-08T19:08:34.993 に答える
2

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

于 2008-11-19T06:22:36.973 に答える
1

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

于 2009-07-28T14:27:38.403 に答える