/** * テストデータを取得して更新する * * @param AbstractTestData $plugin * @return void **/ private function _updateTestData(AbstractTestData $plugin) { // エラー用のデータ(error.html, error2.html)を除外するため-2する $count = count($plugin->getHtmlPaths()) - 2; $dom = new \DOMDocument('1.0', 'UTF-8'); $dom->load($plugin->getRssPath()); $items = $dom->getElementsByTagName('item'); if ($items->length === 0) { $items = $dom->getElementsByTagName('entry'); } foreach ($items as $key => $item) { $test_data = $this->_downloadTestData($item); $test_data_path = $plugin->getHtmlPaths()[$key]; file_put_contents(ROOT . '/data/fixtures/html/' . $test_data_path, $test_data); } }
/** * HTMLを取得する * * @param string $url * @return **/ public function fetchHtml($url = false) { if (!is_null($this->test_data)) { $html_paths = $this->test_data->getHtmlPaths(); $html_path = ROOT . '/data/fixtures/html/'; // テストデータを示したurlかどうか if (in_array($url, $html_paths)) { $html_path .= $url; } else { $html_path .= $html_paths[0]; } $html = str_get_html(file_get_contents($html_path)); } else { $html = file_get_html($url); } if ($html === false) { throw new CrawlerException('htmlが取得出来ませんでした'); } return $html; }