当前位置:首页 > PHP教程 > php应用 > 列表

PHP一个简单的无需刷新爬虫

发布:smiling 来源: PHP粉丝网  添加日期:2021-11-03 21:37:39 浏览: 评论:0 

今天小编就为大家分享一篇关于PHP一个简单的无需刷新爬虫,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

由于只是一个小示例,所以过程化简单写了,小菜随便参考,大神大可点解

  1. <?php  
  2. //设置最大执行时间 
  3. set_time_limit(0); 
  4. function getHtml($url){ 
  5.   // 1. 初始化 
  6.    $ch = curl_init(); 
  7.    // 2. 设置选项,包括URL 
  8.    curl_setopt($ch,CURLOPT_URL,$url); 
  9.    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
  10.    curl_setopt($ch,CURLOPT_HEADER,0); 
  11.    // 3. 执行并获取HTML文档内容 
  12.    $output = curl_exec($ch); 
  13.    if($output === FALSE ){ 
  14.     $output = ''; 
  15.    } 
  16.    // 4. 释放curl句柄 
  17.    curl_close($ch); 
  18.    return $output; 
  19. } 
  20. function getPageData($url){ 
  21.   // 获取整个网页内容 
  22.   $html = getHtml($url); 
  23.   // 初步获取主块内容 
  24.   preg_match("/教程列表.*教程列表/s",$html,$body_html); 
  25.   // 返回数据 
  26.   $data = array(); 
  27.   //判断是否存在要获取的内容 
  28.   if(count($body_html)){ 
  29.     // 获取页面指定信息 
  30.     preg_match_all('/<a class="avatar".*user_id="(\S*)" href="(\S*)" rel="external nofollow" /',$body_html[0],$info_1); 
  31.     preg_match_all('/<a href="(.*)" rel="external nofollow" .*title="(.*)"/',$body_html[0],$info_2); 
  32.     $info = array_merge($info_1,$info_2); 
  33.     //组合的信息 
  34.     for($index=0; $index<count($info[0]); $index++){ 
  35.       //以文章信息作为key存数组,以及覆盖旧数据 
  36.       $data[$info[4][$index]] = array( 
  37.               'user_id'  => $info[1][$index], 
  38.               'user_home' => $info[2][$index], 
  39.               'a_url'   => $info[4][$index], 
  40.               'a_title'  => $info[5][$index], 
  41.            ); 
  42.     } 
  43.   } 
  44.   return $data; 
  45. } 
  46. header("Content-type: text/html; charset=utf-8");  
  47. echo '<pre>'; 
  48. // 初始化数据 
  49. $page_no = 1; 
  50. $data_all = array(); 
  51. // 分页获取数据 
  52. do{ 
  53.   $url = 'http://www.thinkphp.cn/code/examples/p/' . $page_no; 
  54.   $data = getPageData($url); 
  55.   $data_all += $data; 
  56.   $page_no ++; 
  57. }while ($page_no <= 10); //当前只获取10页,如果要全部获取则把条件换成$data或!empty($data) 
  58. var_dump($data_all); 
  59. ?> 

接下的入表库当然就不写了,那些更小意思了~就此别过吧~

Tags: PHP无需刷新爬虫

分享到: