Dom.php 988 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. <?php
  2. namespace Spider\Lib\Doc;
  3. include(DEVER_APP_PATH . 'third/phpQuery.php');
  4. use Dever;
  5. use Spider\Lib\Doc as Doc;
  6. use phpQuery;
  7. class Dom extends Core
  8. {
  9. public static function init($html)
  10. {
  11. return phpQuery::newDocumentHTML($html);
  12. }
  13. public static function find($dom, $rule)
  14. {
  15. $rule = str_replace(array('$', ').'), array('$dom->find', ')->'), $rule);
  16. $cmd = '$dom = ' . $rule . ';';
  17. eval($cmd);
  18. return $dom;
  19. }
  20. public static function rule($doc, $dom, $col, $rule)
  21. {
  22. $dom = pq($dom);
  23. $result = $dom->html();
  24. $rule = explode("\n", $rule);
  25. if (isset($rule[0]) && $rule[0]) {
  26. if (isset($col[$rule[0]])) {
  27. $url = $doc->getUrl($dom, $col, $col[$rule[0]]);
  28. $doc = Doc::getInstance($url, '')->get();
  29. array_shift($rule);
  30. }
  31. $result = self::find($doc, $rule[0]);
  32. }
  33. if (isset($rule[1]) && $rule[1]) $result = parent::match($rule[1], $result);
  34. return $result;
  35. }
  36. }