Curl號稱強大,卻在抓花瓣網的首頁時,如何也不能成功,求解!
來源:互聯網
上載者:User
Curl號稱強大,卻在抓花瓣網的首頁時,怎麼也不能成功,求解!!!!!!!
一直用curl抓頁面,十分方便,屢試屢爽,卻在抓取花瓣網首頁的一個看似簡單的操作中,發現怎麼也不能成功。
基本代碼如下:
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, 'http://huaban.com/');
//類比蜘蛛
//curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)');
//類比普通瀏覽器
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727)');
//可以不要cookie, 因為不登陸,能返回首頁即可
//curl_setopt($ch, CURLOPT_USERAGENT, '');
//其實也可以不要來路,類比直接輸入地址的
curl_setopt($ch, CURLOPT_REFERER, 'http://huaban.com/');
//curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
//curl_setopt($ch, CURLOPT_HEADER, 0); //輸出header
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_exec($ch);
curl_close($ch);
我已經反覆嘗試不同的cookie header agent,都不能返回如同瀏覽器開啟的那種可見頁面,甚至嘗試過 file_get_contents('http://huaban.com/'); 都沒用。 返回的內容,絕大部分內容為js代碼, 但之前成功抓取的頁面,包括各種大小網站,也有js, 並不影響遠程抓取和顯示啊。 試了一天,百思不得其解,在csdn qq群裡面也進行了討論,有人說可能是curl不能運行js。 但現在哪個網站沒有js代碼能, 之前抓取的那些站,js也不在少數啊。沒有一個失敗的。。
實在不知道怎麼解決,將這個問題丟出來,懇請高人作答。 到底是curl不行呢,還是這個網站太變態呢,還是方法不對呢?。。。。
------解決方案--------------------
這種優雅的小清新網站, 沒JS還讓它怎麼存活在這個競爭慘烈的市場?
------解決方案--------------------
這個網站的特別之處就是它的絕大部分內容都是js動態產生的,通過js與後端程式互動不斷的產生新內容
所以用curl抓取的只是它最初始的代碼,也就是大段的js了
------解決方案--------------------
這是你要的資料吧?不知道你是怎麼個抓包法
{"filter":"pin:category:all","pins":[{"pin_id":8447271,"user_id":394332,"board_id":1146189,"file_id":3483249,"file":{"farm":"farm1","bucket":"hbimg","key":"a1524741e8fae0916ba04c8d231f8ad23173ddb5baeff-rNFCpP","type":"image/jpeg","width":440,"height":5779,"frames":1},"media_type":0,"source":"weibo.com","link":"http://weibo.com/2134919185/yoVlDsGWs","raw_text":"小小燈泡大改造,你也來動手做一個吧~","text_meta":{},"via":2,"via_user_id":0,"original":null,"created_at":1340276725,"like_count":0,"comment_count":0,"repin_count":0,"is_private":0,"orig_source":"http://ww4.sinaimg.cn/bmiddle/7f404811jw1du5vv6dpnij.jpg","user":{"user_id":394332,"username":"Havetogo","urlname":"shouji132136652610","created_at":1338984624,"avatar":{"id":3061779,"farm":"farm1","bucket":"hbimg","key":"69d6d7842159946de9ca070c22da1714f259010afb4-WcVdOr","type":"image/jpeg","width":100,"height":100,"frames":1}},"board":{"board_id":1146189,"user_id":394332,"title":"創新的力量","description":"","category_id":null,"seq":6,"pin_count":1,"follow_count":0,"created_at":1340276719,"updated_at":1340276725,"is_private":0}},{"pin_id":8447272,"user_id":444560,"board_id":1146190,"file_id":2064511,"file":{"farm":"farm1","bucket":"hbimg","key":"aa4fab086fe5887299cf17df48a250f9df25e375c95b-M4izBs","type":"image/jpeg","width":440,"height":566,"frames":1},"media_type":0,"source":"weibo.com","link":"http://weibo.com/2596178104/ycTQfusRg","raw_text":"紫羅蘭的致色原因:#翡翠知識普及#(61) 一般認為由於原生翡翠礦中含有微量的錳元素所致,由於錳元素的多寡和其他微量元素如鐵等的滲入程度不同,其紫色也有濃淡深淺的剃度不同,如粉紫,茄紫,籃紫多種紫羅蘭.十春九木,由於翡翠礦石含有錳是一種機率事件,所以紫色翡翠相對數量是很少的,再加上種水好則更少.","text_meta":{"tags":