在做一个爬取信息的东西,遇到一个诡异的问题,麻烦大家看看
$head="<script> document.write(escape(dq));</script>";
$num=$_POST['num'];
$hpzl=$_POST['hpzl'];
$URL="http://www.dlutc.gov.cn/getinfo.php?option=com_content&view=article&id=4&Itemid=13&hm=".$head.$num."&hpzl=".$hpzl."&action=0";
include "snoopy/Snoopy.class.php";
$snoopy = new Snoopy;
echo $URL;
//$snoopy -> fetch($URL);
echo $snoopy->results;
首先吧snoopy fetch 这行注释掉 程序在页面上返回的结果是
http://www.dlutc.gov.cn/getinfo.php?option=com_content&view=article&id=4&Itemid=13&hm=%u8FBDB01098&hpzl=02&action=0
即URL的值 
然后把注释去掉 把哪行改成
$snoopy -> fetch(“http://www.dlutc.gov.cn/getinfo.php?option=com_content&view=article&id=4&Itemid=13&hm=%u8FBDB01098&hpzl=02&action=0”);
程序返回正确结果
[{"flag":"yes","hphm":"辽B01098","hpzl":"小型汽车","data":[{ "WFBH":"2102830000084919","WFSJ": "2011-05-19 15:51:15", "WFDZ": "庄河市泰昌路", "WZYY": "违反禁令标志指示罚200元" ,"FXJG":"庄河市公安局交通警察大队"}]}]
这说明URL的值便为那个链接地址,所以说将注释那行写成
$snoopy -> fetch($URL);
页能得到正确结果 但是事实不是这样的 页面一直打不开 不知道什么原因 难道在传参的过程中发生了什么事情???
同样使用curl方法也有这个问题。

解决方案 »

  1.   

    首先吧snoopy fetch 这行注释掉 程序在页面上返回的结果是
    http://www.dlutc.gov.cn/getinfo.php?option=com_content&view=article&id=4&Itemid=13&hm=%u8FBDB01098&hpzl=02&action=0
    -----------------------------------------------------
    这个时候你最好查看浏览器页面源代码,看这行东西到底什么样的。
      

  2.   

     返回JSON 
    [{"flag":"yes","hphm":"辽B01098","hpzl":"小型汽车","data":[{ "WFBH":"2102830000084919","WFSJ": "2011-05-19 15:51:15", "WFDZ": "庄河市泰昌路", "WZYY": "违反禁令标志指示罚200元" ,"FXJG":"庄河市公安局交通警察大队"}]}]
    问题在于为什么填
    http://www.dlutc.gov.cn/getinfo.php?option=com_content&view=article&id=4&Itemid=13&hm=%u8FBDB01098&hpzl=02&action=0
    好使 而填
    $URL="http://www.dlutc.gov.cn/getinfo.php?option=com_content&view=article&id=4&Itemid=13&hm=".$head.$num."&hpzl=".$hpzl."&action=0"
    不好使呢
    实际上是后者生成的前者啊
      

  3.   

    你看了页面源代码了吗?
    我的意思是,比如
    <?php echo "&lt;";?>
    你看到的是<,网页源代码是&lt;
    那是浏览器转换过给你看的。
      

  4.   

    查看源码看到的也是 
    [{"flag":"yes","hphm":"辽B01098","hpzl":"小型汽车","data":[{ "WFBH":"2102830000084919","WFSJ": "2011-05-19 15:51:15", "WFDZ": "庄河市泰昌路", "WZYY": "违反禁令标志指示罚200元" ,"FXJG":"庄河市公安局交通警察大队"}]}]
      

  5.   

    晕,我让你查看的是echo $URL;检查浏览器页面源代码看这个url是不是有啥问题。
      

  6.   

    SOGA 我理解能力有问题。
    结果是
    http://www.dlutc.gov.cn/getinfo.php?option=com_content&view=article&id=4&Itemid=13&hm=<script> document.write(escape(dq));</script>01098&hpzl=02&action=0 
    看来是那个script有问题咯 那是是吧提交上来的汉字用escape编码用的
      

  7.   

    非常感谢 问题已经解决了 的确是直接把script传过去了 而不是执行过后的结果 我把编码写到别的地方就好了
      

  8.   

    其实我也没仔细看你的代码$head="<script> document.write(escape(dq));</script>";
    $num=$_POST['num'];
    $hpzl=$_POST['hpzl'];
    $URL="http://www.dlutc.gov.cn/getinfo.php?option=com_content&view=article&id=4&Itemid=13&hm=".$head.$num."&hpzl=".$hpzl."&action=0";
    原来你竟然这么用你的$head...
    javascript的输出那是客户端浏览器动作,php的输出那是服务器端的动作,两者不能这么合体!
    你可以把dq也作为表单项POST过来直接用。