PHP 采集心得技巧
更新時間:2009年05月15日 23:45:54 作者:
今天給大家共享一下我的采集代碼! 思路: 采集程序的思路很簡單大體可以分為以下幾個步驟
1.獲取遠(yuǎn)程文件源代碼(file_get_contents或用fopen).
2.分析代碼得到自己想要的內(nèi)容(這里用正規(guī)匹配,一般是得到分頁)。
3.跟根得到的內(nèi)容進(jìn)行下載入庫等操作。
在這里第二步有可能要重復(fù)的操作好幾次,比如說要先分析一下分頁地址,在分析一下內(nèi)頁的內(nèi)容才能取得我們想要的東西。
代碼:
記的以前發(fā)部過部分的代碼今天我在這里在簡單的發(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ù)庫部分");
上面的代碼就是所有采集要用到的代碼了,當(dāng)然大家也可以用fope來作,我個人喜歡用file_get_contents。
下面在共享一下我的下載圖片flash到本地的辦法,太簡單了兩行代碼
PHP代碼:
if(@copy($url,$newurl)){
echo 'ok';
}
在論壇上以前還發(fā)過一個圖片下載函數(shù)這會也放上來給大家
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);
/*打開指定的文件*/
$fp=@fopen($filename.$ext,"a");
/*寫入圖片到指點(diǎn)的文件*/
fwrite($fp,$img);
/*關(guān)閉文件*/
fclose($fp);
/*返回圖片的新文件名*/
return $filename.$ext;
}
共享一下個人的采集心德:
1.不采那些作防盜鏈了的站,其實(shí)可以作假來路但是這樣的站采集成本太高
2.采集盡量快的站,最好在本地進(jìn)行采集
3.采集時有很多時候可以先把一部分?jǐn)?shù)據(jù)存入數(shù)據(jù)庫,等以后進(jìn)行下一步的處理。
4.采集的時候一定要作好出錯處理,我一般都是如果采集三次沒有成功就跳過。以前經(jīng)常就因?yàn)橐粭l內(nèi)容不能采就卡在那里一直的采。
5.入庫前一定要作好判斷,檢查內(nèi)容的合法,過濾不必要的字符串。
2.分析代碼得到自己想要的內(nèi)容(這里用正規(guī)匹配,一般是得到分頁)。
3.跟根得到的內(nèi)容進(jìn)行下載入庫等操作。
在這里第二步有可能要重復(fù)的操作好幾次,比如說要先分析一下分頁地址,在分析一下內(nèi)頁的內(nèi)容才能取得我們想要的東西。
代碼:
記的以前發(fā)部過部分的代碼今天我在這里在簡單的發(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ù)庫部分");
上面的代碼就是所有采集要用到的代碼了,當(dāng)然大家也可以用fope來作,我個人喜歡用file_get_contents。
下面在共享一下我的下載圖片flash到本地的辦法,太簡單了兩行代碼
PHP代碼:
復(fù)制代碼 代碼如下:
if(@copy($url,$newurl)){
echo 'ok';
}
在論壇上以前還發(fā)過一個圖片下載函數(shù)這會也放上來給大家
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);
/*打開指定的文件*/
$fp=@fopen($filename.$ext,"a");
/*寫入圖片到指點(diǎn)的文件*/
fwrite($fp,$img);
/*關(guān)閉文件*/
fclose($fp);
/*返回圖片的新文件名*/
return $filename.$ext;
}
共享一下個人的采集心德:
1.不采那些作防盜鏈了的站,其實(shí)可以作假來路但是這樣的站采集成本太高
2.采集盡量快的站,最好在本地進(jìn)行采集
3.采集時有很多時候可以先把一部分?jǐn)?shù)據(jù)存入數(shù)據(jù)庫,等以后進(jìn)行下一步的處理。
4.采集的時候一定要作好出錯處理,我一般都是如果采集三次沒有成功就跳過。以前經(jīng)常就因?yàn)橐粭l內(nèi)容不能采就卡在那里一直的采。
5.入庫前一定要作好判斷,檢查內(nèi)容的合法,過濾不必要的字符串。
相關(guān)文章
php結(jié)合web uploader插件實(shí)現(xiàn)分片上傳文件
這篇文章主要為大家詳細(xì)介紹了php結(jié)合web uploader插件實(shí)現(xiàn)分片上傳文件, 采用大文件分片并發(fā)上傳,極大的提高了文件上傳效率,感興趣的小伙伴們可以參考一下2016-05-05解決laravel 出現(xiàn)ajax請求419(unknown status)的問題
今天小編就為大家分享一篇解決laravel 出現(xiàn)ajax請求419(unknown status)的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09PHP中刪除變量時unset()和null的區(qū)別分析
當(dāng)程序里不再使用某些大體積的變量時(如:數(shù)組或?qū)ο螅?,我們有必要刪除它們2011-01-01有關(guān)phpmailer的詳細(xì)介紹及使用方法
有關(guān)phpmailer的用法,有需要的朋友不妨參考下2013-01-01PHP實(shí)現(xiàn)將漢字轉(zhuǎn)換為拼音及獲取詞語首字母的方法
這篇文章主要介紹了PHP實(shí)現(xiàn)將漢字轉(zhuǎn)換為拼音及獲取詞語首字母的方法,涉及php字符串、數(shù)組的遍歷及編碼轉(zhuǎn)換相關(guān)操作技巧,需要的朋友可以參考下2017-08-08