CSS セレクターを使用して XHTML ドキュメントをクエリできるようにする PHP クラス/ライブラリはありますか? どうにかして CSS セレクターを使用できれば、非常に簡単にアクセスできるデータを得るためにいくつかのページをスクレイピングする必要があります (jQuery は私を甘やかしてしまいました!)。何か案は?
8 に答える
さらにグーグルで検索した後(最初の結果はあまり役に立ちませんでした)、実際にはこれ用の Zend Framework ライブラリが他にもいくつかあるようです。
XPath は、XML (および XHTML) ノードにアクセスするかなり標準的な方法であり、CSS よりもはるかに正確です。
素晴らしいものは、symfony 2 のコンポーネントであるCssSelector\Parser Introductionです。CSS セレクターを XPath 式に変換します。見てください=)
別のもの:
http://querypath.org/
jQueryユーザーにとって最も興味深いのは、jQuery を PHPに移植したもの、つまり phpQuery でしょう。ライブラリのほぼすべてのセクションが移植されています。さらに、サイト全体のパス/プロセス (ログイン後に利用可能なデータへのアクセスなど) を Web スクレイピングするために使用できるWebBrowserプラグインが含まれています。サーバー上で Web ブラウザーをシミュレートするだけです (イベントと Cookie も)。最新バージョンでは、XML名前空間と CSS3 "|"が実験的にサポートされています。セレクター。
最終的にPHP Query Liteを使用しました。これは非常にシンプルで、必要なものがすべて揃っています。
ドキュメントの解析には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でドキュメントのすべての要素を一度に取得できるかどうかはわかりません...ツリートラバーサルを実行する必要がある場合があります。
私は、Mootools CSS セレクター エンジンhttp://selectors.svn.exyks.org/に基づいて、私のものを書きました。simplexml 拡張機能に依存しています (つまり、読み取り専用です)。