コード例 #1
0
ファイル: Crawler.php プロジェクト: cloudsthere/phpcrawler
 public function crawl($loop = true)
 {
     if ($this->config['clear_dir']) {
         if (file_exists($this->config['dir'])) {
             $res = @deldir($this->config['dir']);
             if (!$res) {
                 throw new \Exception('clear directory:"' . $this->config['dir'] . '" failed');
             }
         }
     }
     if (!file_exists($this->config['dir'])) {
         $res = @mkdir($this->config['dir'], 0755);
         if (!$res) {
             throw new \Exception('create directory:"' . $this->config['dir'] . '" failed');
         }
     }
     $seed = TaskFactory::init($this->base_url, $this->config);
     $queue = TaskQueue::getInstance();
     $queue->push($seed);
     $loop_count = 0;
     while ($task = $queue->shift()) {
         Logger::info('开始任务: ' . $task['path']);
         $task->download();
         // break;
         if (gettype($loop) == 'boolean' && !$loop || is_numeric($loop) && $loop < $loop_count++ || in_array($task['ext'], $this->config['parse_ignore_ext'])) {
             continue;
         }
         $urls = $task->parse();
         foreach ($urls as $url) {
             $new = TaskFactory::create($url, $task);
             if ($new) {
                 $queue->push($new);
             }
         }
     }
 }