❶ php curl 取不到数据 帮我看下 是为什么
有以下几种可能:
1、服务器端确实没有数据返回;
2、curl写错了;
3、试试下面这个,我在用的
functioncurl($url,$post='POST',$data=array()){
$ch=curl_init();
$headers[]="Accept-Charset:utf-8";
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_CUSTOMREQUEST,$post);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);
curl_setopt($ch,CURLOPT_SSLVERSION,1);
curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0(compatible;MSIE5.01;WindowsNT5.0)');
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch,CURLOPT_AUTOREFERER,1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
$result=curl_exec($ch);
curl_close($ch);
returnjson_decode($result,1);
}
❷ 这个页面不知道为什么采集不了希望php高手给写个php的curl的采集,我是新手就是想知道为什么。
解决这类问题需要研究浏览器控制台里的网络请求信息,建议使用火狐浏览器Firebug扩展
会比较方便一些。
关于此类问题的解决请参考我的博客《PHPcURL实现模拟登录与采集使用方法详解》
http://www.zjmainstay.cn/php-curl
补充:
测试代码如下,本地测试可以,阿里云测试失败。
怀疑网站有针对区域性ip做限制的情况,这种情况请试用代理实现采集。
<?php
$url='http://cx.xtbus.com:83/gpsSelectLineDirect.action?gps_line_id=0103&gps_line_name=33C2B7';
$ch=curl_init($url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//返回数据不直接输出
curl_setopt($ch,CURLOPT_ENCODING,"gzip");//指定gzip压缩
$content=curl_exec($ch);//执行并存储结果
curl_close($ch);
echo$content;
❸ php curl如何读取一部分网页,而不是全部
可以用回调函数
❹ php抓取网页内容不完整
用CURL可以抓取到的 可能是你网速太慢超时了 所以抓取不完整 用 curl_setopt($ch, CURLOPT_TIMEOUT, 360) 试试看
❺ 想咨询下关于PHP的CURL采集的问题
摘要 1、开启curl支持
❻ 为什么我用php的curl获取到的数据不完整,无法获取列表全部数据
你好,一般有俩原因:
①接口本身数据不完整;
②接口中数据量过大,可以调整一下服务器配置,PHP配置文件:memory_limit 每个PHP页面所吃掉的最大内存
❼ php curl 采集问题
经对正则表达进行测试,获取数据正确:
❽ php curl 大量数据采集
这个需要配合js,打开一个html页面,首先js用ajax请求页面,返回第一个页面信息确定处理完毕(ajax有强制同步功能),ajax再访问第二个页面。(或者根据服务器状况,你可以同时提交几个URL,跑几个相同的页面)
参数可以由js产生并传递url,php后台页面根据URL抓页面。然后ajax通过php,在数据库或者是哪里设一个标量,标明检测到哪里。由于前台的html页面执行多少时候都没问题,这样php的内存限制和执行时间限制就解决了。
因为不会浪费大量的资源用一个页面来跑一个瞬间500次的for循环了。(你的500次for循环死了原因可能是获取的数据太多,大过了php限制的内存)
不过印象中curl好像也有强制同步的选项,就是等待一个抓取后再执行下一步。但是这个500次都是用一个页面线程处理,也就是说肯定会远远大于30秒的默认执行时间。