| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 | 
							- <?php
 
- namespace Spider\Lib;
 
- use Dever;
 
- class Parse
 
- {
 
- 	private $url = '';
 
- 	private $host = '';
 
- 	private $log;
 
- 	private $doc = array();
 
- 	private $data = array();
 
- 	public function __construct($url, $project, $rule, $col)
 
- 	{
 
- 		$doc = Doc::getInstance($url, $rule);
 
- 		$doc->log(new Log($project));
 
- 		$data = $doc->get();
 
- 		if ($data) {
 
- 			foreach ($data as $k => $v) {
 
- 				$this->data[$k] = $this->load($doc, $v, $col, $project);
 
- 			}
 
- 		}
 
- 		$doc->saveLog();
 
- 	}
 
- 	public function get()
 
- 	{
 
- 		return $this->data;
 
- 	}
 
- 	private function load($doc, $data, $col, $project)
 
- 	{
 
- 		$result = array();
 
- 		foreach ($col as $v) {
 
- 			$callback = false;
 
- 			if (strpos($v['key'], '.') !== false) {
 
- 				$temp = explode('.', $v['key']);
 
- 				$v['key'] = $temp[1];
 
- 				$callback = $temp[0];
 
- 			}
 
- 			$value = $doc->rule($data, $col, $v);
 
- 			if ($value == 'error') {
 
- 				break;
 
- 			}
 
- 			if ($callback) {
 
- 				$value = Dever::{$callback}($value);
 
- 			}
 
- 			$result[$v['key']] = $value;
 
- 		}
 
- 		if (Dever::input('test') == 1) {
 
- 			$doc->outLog();
 
- 			print_r(Dever::table($result));die;
 
- 		}
 
- 		$this->update($result, $project);
 
- 		return $result;
 
- 	}
 
- 	private function update($data, $project)
 
- 	{
 
- 		$param['option_project_id'] = $project;
 
- 		$param['option_value'] = json_encode($data);
 
- 		$info = Dever::db('spider/data')->one($param);
 
- 		if ($info) {
 
- 			$update = array();
 
- 			foreach ($param as $i => $j) {
 
- 				$i = str_replace('option_', 'set_', $i);
 
- 				$update[$i] = $j;
 
- 			}
 
- 			$id = $update['where_id'] = $info['id'];
 
- 			Dever::db('spider/data')->update($update);
 
- 		} else {
 
- 			$update = array();
 
- 			foreach ($param as $i => $j) {
 
- 				$i = str_replace('option_', 'add_', $i);
 
- 				$update[$i] = $j;
 
- 			}
 
- 			$id = Dever::db('spider/data')->insert($update);
 
- 		}
 
- 	}
 
- }
 
 
  |