首页 > 开发 > ThinkPHP > 正文

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

2024-09-09 15:20:17
字体:
来源:转载
供稿:网友

相信许多朋友看小说都有一种感觉就是总有一些广告页面弹出来,加上最近在研究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的编码多有在Think/BaiduModel中做了一个转码如下:

  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.             } //开源软件:Vevb.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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选