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;*/
?>