simple_html_dom 這個真得是一個很好用的工具
你可以去撈別人的網頁回來,以前都要自己寫正規表示式去分析網頁
現在可以透過DOM的方式來操作
而我為何特地要留下這篇來呢? 因為我不知道為甚麼有些網站的資料撈回來
他會被判定不是html的結構,所以就會出現
Fatal error: Call to a member function find()
這樣的錯誤訊息。
而如果我們把程式改一下,透過用curl的方式去撈資料的話,就可以解決這個問題了
simple_html_dom.php 可以去google下載或是 http://simplehtmldom.sourceforge.net/
<?php // example of how to use basic selector to retrieve HTML contents include('../simple_html_dom.php'); // get DOM from URL or file $base = 'http://www.yahoo.com.tw'; $curl = curl_init(); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); curl_setopt($curl, CURLOPT_URL, $base); curl_setopt($curl, CURLOPT_REFERER, $base); curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); $str = curl_exec($curl); curl_close($curl); // Create a DOM object $html = new simple_html_dom(); // Load HTML from a string $html->load($str); // find all link foreach($html->find('a') as $e) echo $e->href . '<br>'; // find all image foreach($html->find('img') as $e) echo $e->src . '<br>'; // find all image with full tag foreach($html->find('img') as $e) echo $e->outertext . '<br>'; /* // find all span tags with class=gb1 foreach($html->find('span.gb1') as $e) echo $e->outertext . '<br>'; // find all td tags with attribite align=center foreach($html->find('td[align=center]') as $e) echo $e->innertext . '<br>'; // extract text from table echo $html->find('td[align="center"]', 1)->plaintext.'<br><hr>'; // extract text from HTML echo $html->plaintext;*/ ?>