1. 程式人生 > >php 網頁資料抓取 簡單例項

php 網頁資料抓取 簡單例項

最近想學習一下資料抓取方面的知識,花了一箇中午時間邊學便實驗,很快就把程式碼寫出來了,例項寫得比較簡單,學習思路為主。需要注意的是,在目標網頁上獲取的資料如果有中文的話,可能會導致亂碼的情況,這時可以用 iconv ( "UTF-8", "ISO-8859-1//TRANSLIT", string ) 這個函式進行編碼,第一個引數是傳入的編碼,第二個引數是輸出的編碼,第三個引數是需要編碼的字串。另外,對xpath的知識不熟悉的話可以去w3cshool學習一下,因為這個比較重要。


<?php
/*
 *
 * 從網頁上抓取資料的例項,僅用於學習。
 * @作者   Duolus
 *
 */
$uri = array (


4 => 'http://www.kuitao8.com/search/index/search/yii/page/4',
3 => 'http://www.kuitao8.com/search/index/search/yii/page/3',
2 => 'http://www.kuitao8.com/search/index/search/yii/page/2',
1 => 'http://www.kuitao8.com/search/index?search=yii'
);


$result = array ();
// 建立一個DOM物件
$dom = new DOMDocument ();
// 遍歷uri陣列,解析DOM資料
foreach ( $uri as $url ) {
// 讀取html檔案
$dom->loadHTMLFile ( $url );
// 轉換成DOM物件
$xml = simplexml_import_dom ( $dom );
// 利用xpath進行找資料
$xpath = $xml->xpath ( '/html/body//a[@class="view_more"]' );
// 遍歷找到的資料,並儲存在新的$result陣列中
foreach ( $xpath as $object ) {
// 指向DOM物件的 屬性值
$att = $object->attributes ();
// 連線uri
$a .= '<a href="http://www.kuitao8.com/';
$a .= iconv ( "UTF-8", "ISO-8859-1//TRANSLIT", $att->href );
$a .= '">';
$a .= iconv ( "UTF-8", "ISO-8859-1//TRANSLIT", $att->title );
$a .= '</a><br>';
// 把連線儲存到新陣列
$result [] = $a;
// 重置,
$a = null;
}


// 釋放資源 
$xml = null;
$xpath = null;
}
// 列印新陣列
print_r ( $result );
?>