PHP採集程式原理分析篇_PHP教程

來源:互聯網
上載者:User
由於需要,要寫一個簡單的PHP採集程式,照例是到網上找了一堆教程,然後照貓畫虎,可是發現網上的教程全是似是而非,沒有一個真正能用的。苦想了幾天,終於弄明白了裡面的道理。在這裡寫出來,請高手指正。

採集程式的思路很簡單,無非就是先打一個頁面,一般都是列表頁,取得裡面全部連結的地址,然後開啟逐條連結,尋找我們感興趣的東西,如果找到,就把它入庫或別的處理。下面以一個很簡單的例子來說說。

首先確定一個採集頁,一般就是列表面了。這裡目標是:http://www.BkJia.com/article/11/index.htm。這是一個列表頁,我們的目的就是採集這個列表頁上全部的文章。有列表頁了,第一步先開啟它,把它的內容納入到我們的程式中來。一般用fopen或是file_get_contents這兩個函數,我們這裡用fopen作例子。怎麼開啟它呢?很簡單:$source=fopen("[url=http://www.BkJia.com/article/11/index.htm",]http://www.BkJia.com/article/11/index.htm",r[/url]);實際上已經把內容納入到我們的程式中來了。注意得到的$source是一個資源,不是可處理的文本,所以再用函數fread將內容讀到一個變數中,這次就是真正的可編輯的文本了。例子:

$content=fread($source,99999);後面的數字表示位元組數,填個大的就行。你用file_put_contents將$content寫入到一個文字檔,可以看出裡面的內容其實就是網頁的源碼。得到了網頁的源碼,我們就要分析裡面的文章連結地址,這裡要用到Regex了,[推薦Regex教程(http://www.BkJia.com/article/7/all/545.1.htm)]。通過查看原始碼,我們可以看到裡面文章的連結地址全是這個樣子  將資料庫連接代碼封裝在函數裡,在需要讀取時調用..

我們就可以寫Regex了。$count=preg_match_all("/(.+?)/",$content,$art_list);

其中數組$art_list[1][$s]裡麵包含的就是某個文章的連結地址。而$art_list[2][$s]包含的就是某一文章的標題。到了這一步就可以算成功了一半了。


接著用for迴圈依次打每個連結,然後像取得標題一樣的方法取得內容即可。以上這些和我在網上找的教程都差不多,但是到了這個for迴圈網上的教程可就差勁,還沒找到一篇可以說清這個事的文章,剛開始我是用js來協助迴圈的,還是用執行個體說吧,剛開始我是這樣做的:
for($i=0;$i<20;4i++ {

中間就是採集內容的部分了,省略了

採集了一頁,肯定要採集再一頁啊
可是再用fopen開啟連結時就不行了。請求失敗什麼的,用js也不行,最後才知道要用這句echo "";其中aa.php就是我們的程式的檔案名稱, id後面的數字就可以協助我們實現迴圈,採集多個頁面。這就是能真正迴圈起來的關鍵
}
腦子有點難受,寫得有點亂,將就著看吧,在高手看來這可能沒什麼大不了的,可是對於我等菜鳥來說,實在是很有協助。

http://www.bkjia.com/PHPjc/508428.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/508428.htmlTechArticle由於需要,要寫一個簡單的PHP採集程式,照例是到網上找了一堆教程,然後照貓畫虎,可是發現網上的教程全是似是而非,沒有一個真正能...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.