PHP 5.3のWebスクレーパーとしてGoutte 1.0.6を使っています。

一度訪問したサイトのHTMLをファイルキャッシュなどに格納しておき、2回目からはファイルキャッシュからHTMLを文字列として変数に読み込み、その内容をスクレイピングするような動作をさせています。

$client = new Goutte\Client;
$is_cached = false;
if ($cache_data = $cache->get($url)) {
  $crawler = $client->request('GET', '');
  $crawler->clear();
  $crawler->addHtmlContent($cache_data, 'cp932');
  $is_cached = true;
}
else {
  $crawler = $client->request('GET', $url);
  $status = $client->getResponse()->getStatus();
  if (($status != 200) && ($status != 304 )) {
    return array(status => $status);
  }
}

のようなコードにしていますが、キャッシュがヒットした場合、空のGETをさせることでCrawlerオブジェクトを得て、いったんスクレイプ対象のHTMLを$crawler->clear()で捨ててから改めて$crawler->addHtmlContent($cache_data, 'cp932');でHTMLを食べさせるというアドホックなコードになっています。

実際には無駄なHTTPリクエストが発生しておりますので、改善できないかと考えています。

Goutteを使ったスクレイピングで、HTTPリクエストなしでスクレイピングできるcrawlerオブジェクトを生成させる方法をご存知の方は、ご教示いただけないでしょうか。

コード全文:
https://github.com/CLCL/akizukidenshi-ogp-injector/blob/8c0869e411ac9898fd8e9cba9bfebb4d93a22314/index.php


(投稿後すぐに自己解決したので一時ここに解決法を載せていましたが、回答の方に転記してこちらの記述を削除しました。)