據(jù)我所知,很多第三庫都可以實現(xiàn)你所要求的這些php爬蟲特征。
創(chuàng)新互聯(lián)-專業(yè)網站定制、快速模板網站建設、高性價比天鎮(zhèn)網站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式天鎮(zhèn)網站制作公司更省心,省錢,快速模板網站建設找我們,業(yè)務覆蓋天鎮(zhèn)地區(qū)。費用合理售后完善,十余年實體公司更值得信賴。
如phpQuery,phpCrawl,phpSpider,Snoopy。
如果使用curl,也是相當不錯的。但你要做的事情更多。它只負責請求和下載,并沒有實現(xiàn)爬蟲的核心。別的事情都要自己做,至少你得先封裝一下。
如果你任務比較緊迫,建議選擇那些第三方庫,集成一下,能用先用著。
業(yè)務時間還是了解一下爬蟲的方方面面比較好。
xpath簡單,拿到源碼,交給phpQuery就可以,像使用jQuery一樣,不需要正則。還有一些是需要動態(tài)渲染才能拿到數(shù)據(jù)的,得用無頭瀏覽器,如phantomjs,去處理。
速度不會成為問題,有問題也是因為速度太快,被網站發(fā)覺然后屏蔽你,而不是太慢。哈哈。
個人認為比較難的是怎么針對反爬蟲策略,怎么做全自動化。還是建議你去看幾本關于爬蟲的書。
直接用Curl就行,具體爬取的數(shù)據(jù)可以穿參查看結果,方法不區(qū)分淘寶和天貓鏈接,但是前提是必須是PC端鏈接,另外正則寫的不規(guī)范,所以可以自己重寫正則來匹配數(shù)據(jù)。
首先要分清楚python和php的優(yōu)勢和劣勢。php在web開發(fā)確實一定程度上優(yōu)于python,但是如果做爬蟲,python毫無疑問是最優(yōu)的選擇。理由如下:
1:爬蟲最大得困難在于反反爬。豐富的生態(tài)(Scrapy爬蟲框架,selenium等等headless瀏覽器)讓反反爬容易不少,文檔豐富,各種庫和driver極大的降低了爬蟲編寫難度。php據(jù)我所知,這些似乎沒有什么太大的優(yōu)勢。
2:python簡單,俗稱膠水語言。不管是java,還是php,甚至node都可以寫爬蟲,但是工業(yè)級爬蟲面臨得場景是比較復雜的,你需要面向的業(yè)務需要的庫或者組件如果本身需要不帶,請問你怎么處理?python基本就不會有太多這種問題。
最后想學python爬蟲的可以點個關注。長期總結爬蟲教程。
可以用以下4個方法來抓取網站 的數(shù)據(jù):
1. 用 file_get_contents 以 get 方式獲取內容:
?
$url = '';
$html = file_get_contents($url);
echo $html;
2. 用fopen打開url,以get方式獲取內容
?
$url = '';
$fp = fopen($url, 'r');
stream_get_meta_data($fp);
$result = '';
while(!feof($fp))
{
$result .= fgets($fp, 1024);
}
echo "url body: $result";
fclose($fp);
3. 用file_get_contents函數(shù),以post方式獲取url
?
$data = array(
'foo'='bar',
'baz'='boom',
'site'='',
'name'='nowa magic');
$data = http_build_query($data);
//$postdata = http_build_query($data);
$options = array(
'http' = array(
'method' = 'POST',
'header' = 'Content-type:application/x-www-form-urlencoded',
'content' = $data
//'timeout' = 60 * 60 // 超時時間(單位:s)
)
);
$url = "";
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
echo $result;
4、使用curl庫,使用curl庫之前,可能需要查看一下php.ini是否已經打開了curl擴展
$url = '';
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
echo $file_contents;