我正在做一些網頁抓取並遇到了幾個我想查詢的數據表。目前,我到:使用SQL查詢XML
$url = 'http://finance.yahoo.com/q/op?s=QQQQ&m=2012-04';
$html = @DOMDocument::loadHTMLFile($url);
$xml = simplexml_import_dom($html);
$results = $xml->xpath('//table[@class="yfnc_datamodoutline1"]');
var_dump($results);
產生的結果:http://pastebin.com/6p3L2Kcc
這是秩序井然的HTML表格的數據,與TH和TD的一切。我想用這樣的:
$sql = 'SELECT Last,Open_Int FROM TABLE1 WHERE Last>25 AND Symbol LIKE "%C%"';
$results = $xmltable->sql($sql);
while($result = $results->fetch_assoc())
echo $result['Last'] . " -- " . $result['Open_Int'] . "\n";
沒有任何創意,我可以寫的類來解析HTML表,採取的第一行,創建一個sqlite的表,選擇其他行,並把它們插入到聲明。但是,你知道一個更好的方法來做到這一點,還是有一些我沒有看到的強大的PHP函數?
更新:也許這裏的範圍太大了。我會很高興看到一個鏈接到一個庫或建議將HTML表格放入一個(適當的)XML表格。
是否有充分的理由說明爲什麼要使用DOMDocument和SimpleXML加載文檔? – 2011-03-05 19:44:14
我所指的「簡單」方法是:使用此方法獲取數據http://www.phpro.org/examples/Parse-HTML-With-PHP-And-DOM.html,然後在數據庫中插入數據。 問題是:有沒有比這更好的方式來完成它? – 2011-03-05 19:46:21
@Mark:不知道,我不知道simplexml直接接受html,謝謝 – 2011-03-05 19:48:34