dever 4 years ago
parent
commit
1d018461c4
4 changed files with 13 additions and 8 deletions
  1. 6 6
      lib/Api.php
  2. 1 1
      lib/Parse.php
  3. 2 0
      lib/doc/Core.php
  4. 4 1
      lib/doc/Json.php

+ 6 - 6
lib/Api.php

@@ -95,7 +95,7 @@ class Api
 		$set = $this->set($config['id']);
 
 		if (strpos($config['site'], '{') !== false && strpos($config['site'], '}') !== false) {
-			$this->preg($config, $col);
+			$this->preg($config, $col, $set);
 		} else {
 			Dever::load('spider/lib/project')->set($config, 4, 1);
 			$this->parse($config['site'], $config['id'], $config['collect_rule'], $col, $set, $config['push']);
@@ -126,28 +126,28 @@ class Api
 		return $parse->get();
 	}
 
-	private function preg($config, $col)
+	private function preg($config, $col, $set)
 	{
 		$pat = '/{(.*?)}/i';
 		preg_match_all($pat, $config['site'], $match);
 		if (isset($match[1][0]) && $match[1][0]) {
 			if ($config['page_num'] <= 0) $config['page_num'] = 100;
 			parse_str($match[1][0], $param);
-			$this->page($param, $match[0][0], $config, $col);
+			$this->page($param, $match[0][0], $config, $col, $set);
 		}
 	}
 
-	private function page($param, $replace, $config, $col)
+	private function page($param, $replace, $config, $col, $set)
 	{
 		if (isset($param['page']) && $param['page']) {
 			for ($i = $param['page']; $i <= $config['page_num']; $i++) {
 				$url = str_replace($replace, $i, $config['site']);
 				Dever::load('spider/lib/project')->set($config, 4, $i);
-				$this->parse($url, $config['id'], $config['collect_rule'], $col);
+				$this->parse($url, $config['id'], $config['collect_rule'], $col, $set, $config['push']);
 			}
 		} else {
 			Dever::load('spider/lib/project')->set($config, 4, 1);
-			$this->parse(str_replace($replace, '', $value), $config['id'], $config['collect_rule'], $col);
+			$this->parse(str_replace($replace, '', $value), $config['id'], $config['collect_rule'], $col, $set, $config['push']);
 		}
 	}
 }

+ 1 - 1
lib/Parse.php

@@ -27,7 +27,7 @@ class Parse
 					$domain = parse_url($url);
 					$host = $domain['scheme'] . '://' . $domain['host'];
 					foreach ($data as $k => $v) {
-						if (!strstr($v, 'http')) {
+						if (is_string($v) && !strstr($v, 'http')) {
 							$v = $host . $v;
 						}
 						$this->data[$k] = $this->load($doc, $k, $v, $col, $set, $push, $project);

+ 2 - 0
lib/doc/Core.php

@@ -21,6 +21,8 @@ class Core
 	public static function rule($doc, $data, $col, $rule, $key)
 	{
 		$rule = explode("\n", str_replace("\r", '', $rule));
+		print_r($data[$rule[0]]);die;
+		print_r($rule[0]);die;
 		if (isset($rule[0]) && $rule[0]) {
 			if (isset($col[$rule[0]]) && $rule[0] != $key) {
 				# 此处开task

+ 4 - 1
lib/doc/Json.php

@@ -6,7 +6,10 @@ class Json
 {
 	public static function init($html)
 	{
-		return json_decode($html, true);
+		if (is_string($html)) {
+			return json_decode($html, true);
+		}
+		return $html;
 	}
 
 	public static function get($data)