簡單的分了幾個步驟:
創(chuàng)新互聯(lián)專注于貴定企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè),商城網(wǎng)站定制開發(fā)。貴定網(wǎng)站建設(shè)公司,為貴定等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站開發(fā),專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
1、確定采集目標
2、獲取目標遠程頁面內(nèi)容(curl、file_get_contents)
3、分析頁面html源碼,正則匹配你需要的內(nèi)容(preg_match、preg_match_all),這一步最為重要,不同頁面正則匹配規(guī)則不一樣
4、入庫
我只教你思路,很簡單的
其它你可以設(shè)定一個計劃任務(wù),每隔多長時間執(zhí)行你的PHP文件一次,計劃任務(wù)設(shè)定可百度,有很多的的,你就搜索“計劃任務(wù)執(zhí)行php文件”就有了;
假如計劃任務(wù)要執(zhí)行的PHP文件叫task.php,這個文件在采集前先把要采集的文件第一條獲取過來,然后去查詢數(shù)據(jù)庫比對一下,有沒有更新,要是數(shù)據(jù)庫里沒有這第就把這條寫入數(shù)據(jù)庫
如果你要
和
之間的所有源碼,用 preg_match 就可以,不用preg_match_all ,如果你要里面的所有的
標簽中的內(nèi)容,可以用preg_match_all //提取所有代碼 $pattern = '/
(.+?)
/is'; preg_match($pattern, $string, $match); //$match[0] 即為
和
之間的所有源碼 echo $match[0]; //然后再提取
之間的內(nèi)容 $pattern = '/(.+?)li/is'; preg_match_all($pattern, $match[0], $results); $new_arr=array_unique($results[0]); foreach($new_arr as $kkk){ echo $kkk; }
先采集第一層頁面的鏈接,然后往下層采集內(nèi)容
至于代碼,就是獲取頁面內(nèi)容加正則收集鏈接
最簡單的辦法就是在你的所有中文頁面上,一般在導(dǎo)航位置加一個英文頁面首頁的超鏈接。這樣用戶點英文那個鏈接就進入英文頁面了。同樣的,在所有的英文頁面導(dǎo)航位置都加一個中文首頁鏈接。推薦你用圖片做這兩個鏈接,這樣不會因為用戶沒有裝對應(yīng)的語言系統(tǒng)而出現(xiàn)奇怪字符。比如歐美用戶一般是不會裝中文系統(tǒng)的,頁面上有中文字符的時候必然顯示為亂碼。
網(wǎng)站目錄當然要為中文和英文各建一個獨立的目錄,里面放置各自的頁面了。
如果使用數(shù)據(jù)庫的話,則思路是一樣的。