比如我想采集一个网站的数据,该网站把用户分成两类,一类是游客,一个是注册会员,有一部分信息游客是无法看到的,只有注册会员才能看到我采集数据时,如何模拟出已经登录的状态。
即使在本地登录了,也没有用<?php
function getFieldValue($regExt,$str)
{  
  preg_match_all($regExt, $str, $jf, PREG_SET_ORDER); 
  return $jf[0][1];
}
error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING);
$id=$_REQUEST['id'];$url = "http://www.91yuan.com/operate/userview/user_basicinfo.asp?id_r=1273128&levels=";
$str = file_get_contents($url);
//echo $str;$regExt = "/<font color=\'.+\'>QQ  :<\/font><font color=\'.+\'>(.+)<\/font><br>/isU";
$intro = getFieldValue($regExt,$str);
echo "QQ = ".$intro."<br>";
?>这样采集出来的结果是:QQ = 银卡/金卡会员可见而实际情况是   QQ = 757224019我怀疑是因为SESSION或COOKIE的问题请问在采集时如何带上网站的SESSION或COOKIE?

解决方案 »

  1.   

    http://www.tblog.com.cn/article.asp?id=336
      

  2.   

    COOKIE问题。你可以参考下现在的采集程序是怎么分析这些问题的。
    下载个dedecms研究下。
      

  3.   

    //设置cookie路经
    $cookie_jar = tempnam('./tmp','cookie.txt');
    //初始化
    $ch = curl_init();
    //设置参数
    $url="登录页面";//http://www.xxx.com/logon.php
    $vars="登录参数";//user=xxx&password=xxx
    $options = array(CURLOPT_URL => $url,//$url登录页面
         CURLOPT_HEADER => 0,
          CURLOPT_NOBODY => 0,
          CURLOPT_PORT => 80,
          CURLOPT_RETURNTRANSFER => 1,
          CURLOPT_FOLLOWLOCATION => 1,
          CURLOPT_COOKIEJAR => $cookie_jar,
          CURLOPT_COOKIEFILE => $cookie_jar,
                    CURLOPT_POST=1,
          CURLOPT_POSTFIELDS=$vars,//var
          CURLOPT_REFERER => $url);
    //$response为返回的页面内容
    $response = curl_exec($ch);登录成功后,取页面
    设置
    $options = array(CURLOPT_URL => $url,//$url 请求页面
         CURLOPT_HEADER => 0,
          CURLOPT_NOBODY => 0,
          CURLOPT_PORT => 80,
          CURLOPT_RETURNTRANSFER => 1,
          CURLOPT_FOLLOWLOCATION => 1,
          CURLOPT_COOKIEJAR => $cookie_jar,//上面设置的$cookie_jar
          CURLOPT_COOKIEFILE => $cookie_jar,,//上面设置的$cookie_jar
          CURLOPT_REFERER => $url);
    //$response为返回的请求页面内容
    $response = curl_exec($ch);//$ch为上面初始化的$ch