経緯
JSによるレンダリング後のhtmlをスクレイピングしたかったので、phantomjsを使用。
他のページはそういう感じではなく、phpQueryでスクレイピングしていた。
そのためこういう事になりました。
方法
理由はよくわからんが、いい感じになってくれないので、
DOMDocumentにしてからphpQueryに食わせないといけなかった。
//phantomjsでhtmlをとってきて
$client = Client::getInstance();
$client->getEngine()->setPath(PHANTOMJS_PATH);
$request = $client->getMessageFactory()->createRequest();
$response = $client->getMessageFactory()->createResponse();
$request->setUrl($url);
$client->send($request, $response);
$html = $response->getContent();
//DOMDocumentにする
$dom = new DOMDocument;
@$dom->loadHTML($html); //$htmlになんらかのHTML的invalidがあるので、@をつける
$dom->saveHTML();
//そしてphpQueryでスクレイピングする
$doc = new phpQuery::newDocument($dom);
確認した環境は PHP 7.1.16
です。