不能让Xpath只输出一些TD

时间:2011-07-02 14:13:42

标签: dom xpath screen-scraping screen

如果你知道怎么做,这可能很容易,但我不知道,花了几个小时后谷歌搜索它我不得不问一些“真正的”程序员,因为我显然不是一个。

我似乎无法找到适合我的教程或代码示例。假设我只是想输出“EuroDiesel 10”TR(向下滚动以找到它)然后我只想要来自TD编号1和9的数据。我将如何去做?

我还想将输出数据添加到带有日期戳的SQL DB,并且每天更新一次。我认为这可以通过Cron Job完成,这是正确的,应该为每个价格表创建一个我想从中收集数据的工作,还是我可以在一个脚本中完成(网站是非常不同的)?

首先,我只需要正确的数据。这是我到目前为止所得到的。

<?php 
$dom = new DOMDocument;
$date = date("j. F, Y");
libxml_use_internal_errors(true);
$dom->loadHTMLFile('http://www3.statoil.com/mar/kbh00438.nsf/UNID/8C81E46A6EC8BA3BC12578C0002FFF5A?OpenDocument');
libxml_use_internal_errors(false);
$xpath = new DOMXPath($dom);
$aTag = $xpath->query('//p[@class="text"]');

foreach($aTag as $val) {
    echo $date, '', $val->plaintext. "". utf8_decode(trim($val->nodeValue, "")) . "<br />\n";
}
?>

我希望你们能帮助我,只是在这里学习......

谢谢! 领域

1 个答案:

答案 0 :(得分:0)

对于XPath,我认为/html/body/form/table/tbody/tr[normalize-space(td[1]) = 'EuroDiesel 10']/td[position() = 1 or position() = 9]应该这样做。然后访问$val->textContent而不是nodeValue。