http://dadao.net/php/prtime/news_type_list.php?news_lm=%BD%F1%C8%D5%C4%CF%BA%A3  我要采集,这个地址,这里有分页,问题是用php 得不到第二页的内容。比如,$url = "http://dadao.net/php/prtime/news_type_list.php?news_lm=%BD%F1%C8%D5%C4%CF%BA%A3&page=2"  或者直接 $url = "http://dadao.net/php/prtime/news_type_list.php?page=2" ; 也不行。这个网站,如果你第一次用浏览器打开地址 http://dadao.net/php/prtime/news_type_list.php?page=2  或者 http://dadao.net/php/prtime/news_type_list.php?news_lm=%BD%F1%C8%D5%C4%CF%BA%A3&page=2  都得不到第二页内容。可是如果第一次打开 http://dadao.net/php/prtime/news_type_list.php?news_lm=%BD%F1%C8%D5%C4%CF%BA%A3 这个地址,再从这里跳转到第二页,就一切正常。   求解呀!!!

解决方案 »

  1.   

    这样的话估计要发cookie过去,可能对方用了缓存,一次查询出来放在缓存,然后page2从缓存提取(不再查询)
    多数是session判断
      

  2.   

    有没有办法,用php 模拟  浏览器打开 http://dadao.net/php/prtime/news_type_list.php?news_lm=%BD%F1%C8%D5%C4%CF%BA%A3
      

  3.   

    如一楼所说,将session以cookie方式投递过去。
      

  4.   


    curl,搞采集都不知道这个么?
      

  5.   

    用curl  可以解决这个问题!?
      

  6.   

    求一个curl  解决这个问题的代码, 以前常听curl  但没研究过, 刚自己瞎搞了一下, 有个错,curl_setopt(): supplied argument is not a valid cURL handle resource in    不知道什么意思
      

  7.   

    $ch = curl_init(); //初始化curl_setopt($ch, CURLOPT_URL, 'http://dadao.net/php/prtime/news_type_list.php?page=4');
    curl_setopt($ch, CURLOPT_POST, 1);
    $request = 'news_lm=%BD%F1%C8%D5%C4%CF%BA%A3';
    curl_setopt($ch, CURLOPT_POSTFIELDS, $request); //把返回来的cookie信息保存在$cookie_jar文
    //curl_setopt($ch, CURLOPT_AUTOREFERER, 'http://dadao.net/php/prtime/news_type_list.php?page=4'); //你要访问的页面
    //curl_setopt($ch, CURLOPT_REFERER, 'http://dadao.net/php/prtime/news_type_list.php?news_lm=%BD%F1%C8%D5%C4%CF%BA%A3'); //伪造来路页面
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); //是否显示内容$date = curl_exec($ch); //执行
    curl_close($ch); //返回关闭
    print_r($date);
    //echo 'ff';
    //phpinfo();/*// 初始化一个 cURL 对象
    $curl = curl_init();// 设置你需要抓取的URL
    curl_setopt($curl, CURLOPT_URL, 'http://dadao.net/php/prtime/news_type_list.php?news_lm=%BD%F1%C8%D5%C4%CF%BA%A3');// 设置header
    curl_setopt($curl, CURLOPT_HEADER, 1);// 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);// 运行cURL,请求网页
    $data = curl_exec($curl);// 关闭URL请求
    curl_close($curl);// 显示获得的数据
    var_dump($data);*/
      

  8.   

    你写的能用吗?
    这样写:file_put_contents('bup.txt',''); // 构造一个缓存文件,因为在线解析可能很费时间 
    file_put_contents('cookie.txt',''); //文件 cookie.txt 用于存放取得的cookiefoo('news_lm=%BD%F1%C8%D5%C4%CF%BA%A3');for($i=2; $i<=10; $i++) { //一共取10页
      speed(2); //等一下,防止对方反应不过来
      foo("page=$i");
    }readfile('bup.txt'); //最后看一下function foo($param) {
      $url = 'http://dadao.net/php/prtime/news_type_list.php';
      $cookiejar = realpath('cookie.txt');
      $fp = fopen('bup.txt', 'a');
      $ch = curl_init("$url?$param");
      curl_setopt($ch, CURLOPT_FILE, $fp);
      curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiejar);
      curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiejar);
      curl_setopt($ch, CURLOPT_HEADER, 0);  curl_exec($ch);
      curl_close($ch);
      fclose($fp);
    }