/** * RSSを取得する * * @return DOMDocument **/ public function fetchRss() { try { if (!is_null($this->test_data)) { $rss_xml = file_get_contents($this->test_data->getRssPath()); } else { $rss_xml = file_get_contents($this->rss_url); } $dom = new \DOMDocument('1.0', 'UTF-8'); $dom->loadXML($rss_xml); } catch (\Exception $e) { throw new CrawlerException('RSSを取得出来ませんでした'); } return $dom; }
/** * テストデータを取得して更新する * * @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); } }