我正在进行一些网页抓取,并遇到了我想要查询的几个数据表。目前我要:
$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中创建一个表,选择其他行并将它们转换为insert语句。但是,你知道更好的方法吗,还是有一些我没见过的强大的PHP函数?
更新:也许这里的范围太大了。我很高兴获得一个库的链接或有关将HTML表格放入(正确的)XML表的建议。
答案 0 :(得分:1)
答案取决于您的更大需求。以下三个问题可以解决这些问题:
1)数据读取与写入的频率是多少?
2)您是保留旧版本还是仅提供最新版本?
3)数据是否会与其他数据进行比较?
在一个案例中,让我们说#1的答案是“更多的读取”,#3的答案是“是”。在这种情况下,将XML结果放入SQL表以进行频繁和灵活的查询可能是值得的。
然而,在另一种情况下,让我们说#2的答案是“否”,#3的答案是“否” - 你只是保留最新的检索,不要将它与任何东西进行比较。在这种情况下,您可以直接插入文件并根据需要进行检索(#1变得无关紧要)。
编辑以回应评论中的问题:假设您要将其放入数据库,您链接的显示会显示一组嵌套的对象/数组。您“走树”以剥离嵌套对象,剥离其属性并向特定表发出单独的插入。