PHP 采集心得技巧
更新時(shí)間:2009年05月15日 23:45:54 作者:
今天給大家共享一下我的采集代碼! 思路: 采集程序的思路很簡(jiǎn)單大體可以分為以下幾個(gè)步驟
1.獲取遠(yuǎn)程文件源代碼(file_get_contents或用fopen).
2.分析代碼得到自己想要的內(nèi)容(這里用正規(guī)匹配,一般是得到分頁(yè))。
3.跟根得到的內(nèi)容進(jìn)行下載入庫(kù)等操作。
在這里第二步有可能要重復(fù)的操作好幾次,比如說(shuō)要先分析一下分頁(yè)地址,在分析一下內(nèi)頁(yè)的內(nèi)容才能取得我們想要的東西。
代碼:
記的以前發(fā)部過(guò)部分的代碼今天我在這里在簡(jiǎn)單的發(fā)部一下
復(fù)制PHP內(nèi)容到剪貼板
PHP代碼:
@$nl=file_get_contents($rs['url']);//抓取遠(yuǎn)程內(nèi)容
preg_match_all("/var url = "gameswf/(.*?).swf";/is",$nl,$connect);//進(jìn)行正規(guī)匹配取得自己要的內(nèi)容
mysql_query("insert ......插入數(shù)據(jù)庫(kù)部分");
上面的代碼就是所有采集要用到的代碼了,當(dāng)然大家也可以用fope來(lái)作,我個(gè)人喜歡用file_get_contents。
下面在共享一下我的下載圖片flash到本地的辦法,太簡(jiǎn)單了兩行代碼
PHP代碼:
if(@copy($url,$newurl)){
echo 'ok';
}
在論壇上以前還發(fā)過(guò)一個(gè)圖片下載函數(shù)這會(huì)也放上來(lái)給大家
PHP代碼:
/*本存圖片函數(shù)*/
function getimg($url,$filename){
/*判斷圖片的url是否為空,如果為空停止函數(shù)*/
if($url==""){
return false;
}
/*取得圖片的擴(kuò)展名,存入變量$ext中*/
$ext=strrchr($url,".");
/*判斷是否是合法的圖片文件*/
if($ext!=".gif" && $ext!=".jpg"){
return false;
}
/*讀取圖片*/
$img=file_get_contents($url);
/*打開(kāi)指定的文件*/
$fp=@fopen($filename.$ext,"a");
/*寫(xiě)入圖片到指點(diǎn)的文件*/
fwrite($fp,$img);
/*關(guān)閉文件*/
fclose($fp);
/*返回圖片的新文件名*/
return $filename.$ext;
}
共享一下個(gè)人的采集心德:
1.不采那些作防盜鏈了的站,其實(shí)可以作假來(lái)路但是這樣的站采集成本太高
2.采集盡量快的站,最好在本地進(jìn)行采集
3.采集時(shí)有很多時(shí)候可以先把一部分?jǐn)?shù)據(jù)存入數(shù)據(jù)庫(kù),等以后進(jìn)行下一步的處理。
4.采集的時(shí)候一定要作好出錯(cuò)處理,我一般都是如果采集三次沒(méi)有成功就跳過(guò)。以前經(jīng)常就因?yàn)橐粭l內(nèi)容不能采就卡在那里一直的采。
5.入庫(kù)前一定要作好判斷,檢查內(nèi)容的合法,過(guò)濾不必要的字符串。
2.分析代碼得到自己想要的內(nèi)容(這里用正規(guī)匹配,一般是得到分頁(yè))。
3.跟根得到的內(nèi)容進(jìn)行下載入庫(kù)等操作。
在這里第二步有可能要重復(fù)的操作好幾次,比如說(shuō)要先分析一下分頁(yè)地址,在分析一下內(nèi)頁(yè)的內(nèi)容才能取得我們想要的東西。
代碼:
記的以前發(fā)部過(guò)部分的代碼今天我在這里在簡(jiǎn)單的發(fā)部一下
復(fù)制PHP內(nèi)容到剪貼板
PHP代碼:
@$nl=file_get_contents($rs['url']);//抓取遠(yuǎn)程內(nèi)容
preg_match_all("/var url = "gameswf/(.*?).swf";/is",$nl,$connect);//進(jìn)行正規(guī)匹配取得自己要的內(nèi)容
mysql_query("insert ......插入數(shù)據(jù)庫(kù)部分");
上面的代碼就是所有采集要用到的代碼了,當(dāng)然大家也可以用fope來(lái)作,我個(gè)人喜歡用file_get_contents。
下面在共享一下我的下載圖片flash到本地的辦法,太簡(jiǎn)單了兩行代碼
PHP代碼:
復(fù)制代碼 代碼如下:
if(@copy($url,$newurl)){
echo 'ok';
}
在論壇上以前還發(fā)過(guò)一個(gè)圖片下載函數(shù)這會(huì)也放上來(lái)給大家
PHP代碼:
復(fù)制代碼 代碼如下:
/*本存圖片函數(shù)*/
function getimg($url,$filename){
/*判斷圖片的url是否為空,如果為空停止函數(shù)*/
if($url==""){
return false;
}
/*取得圖片的擴(kuò)展名,存入變量$ext中*/
$ext=strrchr($url,".");
/*判斷是否是合法的圖片文件*/
if($ext!=".gif" && $ext!=".jpg"){
return false;
}
/*讀取圖片*/
$img=file_get_contents($url);
/*打開(kāi)指定的文件*/
$fp=@fopen($filename.$ext,"a");
/*寫(xiě)入圖片到指點(diǎn)的文件*/
fwrite($fp,$img);
/*關(guān)閉文件*/
fclose($fp);
/*返回圖片的新文件名*/
return $filename.$ext;
}
共享一下個(gè)人的采集心德:
1.不采那些作防盜鏈了的站,其實(shí)可以作假來(lái)路但是這樣的站采集成本太高
2.采集盡量快的站,最好在本地進(jìn)行采集
3.采集時(shí)有很多時(shí)候可以先把一部分?jǐn)?shù)據(jù)存入數(shù)據(jù)庫(kù),等以后進(jìn)行下一步的處理。
4.采集的時(shí)候一定要作好出錯(cuò)處理,我一般都是如果采集三次沒(méi)有成功就跳過(guò)。以前經(jīng)常就因?yàn)橐粭l內(nèi)容不能采就卡在那里一直的采。
5.入庫(kù)前一定要作好判斷,檢查內(nèi)容的合法,過(guò)濾不必要的字符串。
相關(guān)文章
PHP如何實(shí)現(xiàn)給頁(yè)面設(shè)置獨(dú)立訪問(wèn)密碼
這篇文章主要為大家詳細(xì)介紹了PHP如何實(shí)現(xiàn)給頁(yè)面設(shè)置獨(dú)立訪問(wèn)密碼,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以了解下2024-03-03
php模板函數(shù) 正則實(shí)現(xiàn)代碼
有些空閑,就弄了下template函數(shù),比較粗糙。主要是利用正則表達(dá)式,把模板文件(html文件)轉(zhuǎn)換成php文件,從而實(shí)現(xiàn)前后臺(tái)分離,即是所謂的mvc思想了2012-10-10
php網(wǎng)站被掛木馬后的修復(fù)方法總結(jié)
這篇文章主要介紹了php網(wǎng)站被掛木馬后的修復(fù)方法,總結(jié)分析了Linux與Windows系統(tǒng)上木馬的查殺方法,并給出了一個(gè)完整的木馬查找工具實(shí)例,需要的朋友可以參考下2014-11-11
php實(shí)現(xiàn)多站點(diǎn)共用session實(shí)現(xiàn)單點(diǎn)登錄的方法詳解
這篇文章主要介紹了php實(shí)現(xiàn)多站點(diǎn)共用session實(shí)現(xiàn)單點(diǎn)登錄的方法,結(jié)合實(shí)例形式詳細(xì)分析了php多站點(diǎn)共用seeion實(shí)現(xiàn)單點(diǎn)登錄相關(guān)原理及操作注意事項(xiàng),需要的朋友可以參考下2019-09-09
php構(gòu)造方法中析構(gòu)方法在繼承中的表現(xiàn)
這篇文章主要為大家詳細(xì)介紹了php構(gòu)造方法中析構(gòu)方法在繼承中的表現(xiàn),感興趣的小伙伴們可以參考一下2016-04-04
php讀取遠(yuǎn)程gzip壓縮網(wǎng)頁(yè)的方法
這篇文章主要介紹了php讀取遠(yuǎn)程gzip壓縮網(wǎng)頁(yè)的方法,當(dāng)站點(diǎn)使用gzip壓縮時(shí),使用常規(guī)的遠(yuǎn)程獲取方法會(huì)得到亂碼結(jié)果,使用本文方法即可解決這個(gè)問(wèn)題,需要的朋友可以參考下2014-12-12

