当前位置:首页 > 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. function getPageData($url){ 
  20.   // 获取整个网页内容 
  21.   $html = getHtml($url); 
  22.   // 初步获取主块内容 
  23.   preg_match("/教程列表.*教程列表/s",$html,$body_html); 
  24.   // 返回数据 
  25.   $data = array(); 
  26.   //判断是否存在要获取的内容 
  27.   if(count($body_html)){ 
  28.     // 获取页面指定信息 
  29.     preg_match_all('/<a class="avatar".*user_id="(\S*)" href="(\S*)" rel="external nofollow" /',$body_html[0],$info_1); 
  30.     preg_match_all('/<a href="(.*)" rel="external nofollow" .*title="(.*)"/',$body_html[0],$info_2); 
  31.     $info = array_merge($info_1,$info_2); 
  32.     //组合的信息 
  33.     for($index=0; $index<count($info[0]); $index++){ 
  34.       //以文章信息作为key存数组,以及覆盖旧数据 
  35.       $data[$info[4][$index]] = array
  36.               'user_id'  => $info[1][$index], 
  37.               'user_home' => $info[2][$index], 
  38.               'a_url'   => $info[4][$index], 
  39.               'a_title'  => $info[5][$index], 
  40.            ); 
  41.     } 
  42.   } 
  43.   return $data
  44. header("Content-type: text/html; charset=utf-8");  
  45. echo '<pre>'
  46. // 初始化数据 
  47. $page_no = 1; 
  48. $data_all = array(); 
  49. // 分页获取数据 
  50. do
  51.   $url = 'http://www.thinkphp.cn/code/examples/p/' . $page_no
  52.   $data = getPageData($url); 
  53.   $data_all += $data
  54.   $page_no ++; 
  55. }while ($page_no <= 10); //当前只获取10页,如果要全部获取则把条件换成$data或!empty($data) 
  56. var_dump($data_all); 
  57. ?> 

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

Tags: PHP无需刷新爬虫

分享到: