php框架

 首页 > php框架 > ThinkPHP > phpQuery ------实战应用thinkphp框架 - Thinkphp

phpQuery ------实战应用thinkphp框架 - Thinkphp

分享到:
【字体:
导读:
          相信许多朋友看小说都有一种感觉就是总有一些广告页面弹出来,加上最近在研究phpQuery进行数据采集,所以萌生了一个写一个小说网站玩的想法,经过大概4天的时间终于完成了,主要运用...

phpQuery ------实战应用thinkphp框架

相信许多朋友看小说都有一种感觉就是总有一些广告页面弹出来,加上最近在研究phpQuery进行数据采集,所以萌生了一个写一个小说网站玩的想法,经过大概4天的时间终于完成了,主要运用thinkphp框架MongoDb和phpQuery.

如下是一个分页采集的例子:

  1. public function pageHtml($searchkey$page = 1) { 
  2.         Vendor('phpQuery.phpQuery.phpQuery'); 
  3.         $pageHtml = Baidu::searchPage($searchkey$page); 
  4.         $pageHtml = phpQuery::newDocumentHTML($pageHtml); 
  5.         $count = $pageHtml->find('#pagelink .last')->html(); 
  6.         $trs = $pageHtml->find('#content tr'); 
  7.         foreach ($trs as $tr) { 
  8.             $book['href'] = pq($tr)->find('td:eq(0) a')->attr('href'); 
  9.             $book['title'] = Baidu::utf8(pq($tr)->find('td:eq(0) a')->html()); 
  10.             $book['bookId'] = intval(end(explode('/'$book['href']))); 
  11.             $href = explode('/', pq($tr)->find('td:eq(1) a')->attr('href')); 
  12.             $book['newZj'] = Baidu::DING_DIAN . $href[3] . '/' . $href[4] . '/' . $href[5] . '.html'
  13.             $book['newName'] = Baidu::utf8(pq($tr)->find('td:eq(1) a')->html()); 
  14.             $book['author'] = Baidu::utf8(pq($tr)->find('td:eq(2)')->html()); 
  15.             $book['ziNum'] = Baidu::utf8(pq($tr)->find('td:eq(3)')->html()); 
  16.             $book['lastDate'] = Baidu::utf8(pq($tr)->find('td:eq(4)')->html()); 
  17.             $book['status'] = Baidu::utf8(pq($tr)->find('td:eq(5)')->html()); 
  18.             $n = D('book')->where(array('bookId' => $book['bookId']))->find(); 
  19.             $book['update'] = time(); 
  20.             if ($n) { 
  21.                 $book['_id'] = $n['_id']; 
  22.                 $book['create'] = $n['create']; 
  23.                 D('book')->create($book); 
  24.                 D('book')->save(); 
  25.             } else { 
  26.                 if ($book['href']) { 
  27.                     $book['create'] = time(); 
  28.                     D('book')->add($book); 
  29.                 } 
  30.             } 
  31.         } 
  32.         phpQuery::$documents = array(); 
  33.         return $count
  34.     } 

由于用的是mongoDb所以字符串要用utf-8的编码多有在ThinkBaiduModel中做了一个转码如下:

  1. public static function utf8(String $string) { 
  2.             if (is_string($string)) { 
  3.                $untion = mb_detect_encoding($stringarray("ASCII"'UTF-8'"GB2312""GBK"'BIG5')); //转码 
  4.             if ($untion != 'UTF-8') { 
  5.                 $string = mb_convert_encoding($string"UTF-8"$untion); 
  6.             } //开源软件:phpfensi.com 
  7.             return $string
  8.         } 
  9.         return 'this is not string'
  10.      } 

phpQuery下载地址:http://pan.baidu.com/s/1ntv8su1

phpquery会占用过多内存的解决方法http://www.neatstudio.com/archives/?article-1928.html

分享到:
thinkPHP的树 - Thinkphp
thinkPHP的树 具有这个结构的数组,不是这样的话,可以改类的实现,具体用法见类注释,我这就不说了,代码如下: $list=array(             1 => array('id'=>'1','pid'=>0,'name'=>'一级栏目一'),           ...
关于TP函数getlastSql()的错误问题 - Thi...
关于TP函数getlastSql()的错误问题 用getlastSql()函数打印最后执行的一条sql语句进行排错很久了,最近使用的时候经常遇到一个问题,就是我最后执行的是update更新语句,但是getlastSql打印出来的都是select语句,很是郁闷,第一次遇到的时候忘记写记录,再遇到的时候还是不知道原因是什么,关于TP函...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……