在做一个爬取信息的东西,遇到一个诡异的问题,麻烦大家看看
$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方法也有这个问题。
$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方法也有这个问题。
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":"庄河市公安局交通警察大队"}]}]
问题在于为什么填
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"
不好使呢
实际上是后者生成的前者啊
我的意思是,比如
<?php echo "<";?>
你看到的是<,网页源代码是<
那是浏览器转换过给你看的。
[{"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=<script> document.write(escape(dq));</script>01098&hpzl=02&action=0
看来是那个script有问题咯 那是是吧提交上来的汉字用escape编码用的
$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过来直接用。