簡(jiǎn)單的分了幾個(gè)步驟:
目前成都創(chuàng)新互聯(lián)公司已為近千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁(yè)空間、成都網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、安丘網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
1、確定采集目標(biāo)
2、獲取目標(biāo)遠(yuǎn)程頁(yè)面內(nèi)容(curl、file_get_contents)
3、分析頁(yè)面html源碼,正則匹配你需要的內(nèi)容(preg_match、preg_match_all),這一步最為重要,不同頁(yè)面正則匹配規(guī)則不一樣
4、入庫(kù)
1、使用file_get_contents獲得網(wǎng)頁(yè)源代碼。這個(gè)方法最常用,只需要兩行代碼即可,非常簡(jiǎn)單方便。
2、使用fopen獲得網(wǎng)頁(yè)源代碼。這個(gè)方法用的人也不少,不過代碼有點(diǎn)多。
3、使用curl獲得網(wǎng)頁(yè)源代碼。使用curl獲得網(wǎng)頁(yè)源代碼的做法,往往是需要更高要求的人使用,例如當(dāng)你需要在抓取網(wǎng)頁(yè)內(nèi)容的同時(shí),得到網(wǎng)頁(yè)header信息,還有ENCODING編碼的使,USERAGENT的使用等等。
所謂的網(wǎng)頁(yè)代碼,就是指在網(wǎng)頁(yè)制作過程中需要用到的一些特殊的"語(yǔ)言",設(shè)計(jì)人員通過對(duì)這些"語(yǔ)言"進(jìn)行組織編排制作出網(wǎng)頁(yè),然后由瀏覽器對(duì)代碼進(jìn)行"翻譯"后才是我們最終看到的效果。
制作網(wǎng)頁(yè)時(shí)常用的代碼有HTML,JavaScript,ASP,PHP,CGI等,其中超文本標(biāo)記語(yǔ)言(標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言下的一個(gè)應(yīng)用、外語(yǔ)簡(jiǎn)稱:HTML)是最基礎(chǔ)的網(wǎng)頁(yè)代碼。
一、用file_get_contents函數(shù),以post方式獲取url
?php
$url=?'';
$data=?array('foo'=?'bar');
$data= http_build_query($data);
$opts=?array(
'http'=?array(
'method'=?'POST',
'header'="Content-type: application/x-www-form-urlencoded\r\n" ?.
"Content-Length: " ?.?strlen($data) .?"\r\n",
'content'=?$data
)
);
$ctx= stream_context_create($opts);
$html= @file_get_contents($url,'',$ctx);
二、用file_get_contents以get方式獲取內(nèi)容
?php
$url='';
$html=?file_get_contents($url);
echo$html;
?
三、用fopen打開url, 以get方式獲取內(nèi)容
?php
$fp=?fopen($url,'r');
$header= stream_get_meta_data($fp);//獲取報(bào)頭信息
while(!feof($fp)) {
$result.=?fgets($fp, 1024);
}
echo"url header: {$header} br":
echo"url body: $result";
fclose($fp);
?
四、用fopen打開url, 以post方式獲取內(nèi)容
?php
$data=?array('foo2'=?'bar2','foo3'='bar3');
$data= http_build_query($data);
$opts=?array(
'http'=?array(
'method'=?'POST',
'header'="Content-type: application/x-www-form-
urlencoded\r\nCookie:cook1=c3;cook2=c4\r\n" ?.
"Content-Length: " ?.?strlen($data) .?"\r\n",
'content'=?$data
)
);
$context= stream_context_create($opts);
$html=?fopen(';id2=i4','rb',false,?$context);
$w=fread($html,1024);
echo$w;
?
五、使用curl庫(kù),使用curl庫(kù)之前,可能需要查看一下php.ini是否已經(jīng)打開了curl擴(kuò)展
?php
$ch= curl_init();
$timeout= 5;
curl_setopt ($ch, CURLOPT_URL,?'');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT,?$timeout);
$file_contents= curl_exec($ch);
curl_close($ch);
echo$file_contents;
?
先獲取整個(gè)網(wǎng)頁(yè)的內(nèi)容,然后匹配到你說的數(shù)據(jù),嵌套到自己的網(wǎng)站,隔一段時(shí)間ajax運(yùn)行一次。
給你個(gè)思路, 看你抓的頁(yè)面有多少, 少的話就一個(gè)接口就好, 多的話最好起和后臺(tái)任務(wù)那跑.
先用curl模擬常用瀏覽器數(shù)據(jù), 發(fā)起請(qǐng)求獲取html數(shù)據(jù), 獲取后寫不來正則表達(dá)式的可以利用一些插件如phpquery等解析html然后獲取相應(yīng)數(shù)據(jù), 寫的來正則表達(dá)式的, 隨便寫幾行就可以抓取數(shù)據(jù)了, 最后再保存好就行