❶ 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秒的默認執行時間。