Amazon Campaign

2014年5月6日火曜日

phpQuery 注意点

phpQueryを使ってみたので注意点を共有します。

利用バージョン


  • phpQuery 0.9.5
  • PHP 5.4

Webサイトからの取得方法

Webサイトからドキュメントを取得する場合のコードは下記のようになります。
$html = file_get_contents('http://www.yahoo.co.jp/');
\phpQuery::newDocument($html);

tbodyがパースされない

phpQueryは読み込んだDOMに対してCSSセレクタを用いて要素を抽出します。ボクが読み込んだページに対では<tbody>タグが読み込まれずに無視されました。例えば
#system-contents > table.hoge > tbody > tr.abc
というセレクタの場合
#system-contents > table.hoge > tr.abc
と指定する必要があります。他にも同様のタグがあるかもしれませんが、今のところ<tbody>以外には遭遇していません。

children() で指定するセレクタは子供または子孫セレクタから記述する

1度セレクタで取得したオブジェクトに対して再度セレクタで要素を絞りたい場合があると思います。セレクタで取得したオブジェクトは phpQueryObject であるため、children('セレクタ文字列') メソッドで行います。 ここで指定するセレクタは抽出済みの要素に対する子供または子孫となるため、子供の場合は'>'、子孫の場合はスペースから始める必要があります。

例)

$hoge->children('> td')->eq(0)->text());
$hoge->children(' td')->eq(0)->text());

Amazon_ad