比如我想采集一个网站的数据,该网站把用户分成两类,一类是游客,一个是注册会员,有一部分信息游客是无法看到的,只有注册会员才能看到我采集数据时,如何模拟出已经登录的状态。
即使在本地登录了,也没有用<?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?
即使在本地登录了,也没有用<?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?
下载个dedecms研究下。
$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