Не удается получить Xpath для вывода только некоторых TD - PullRequest
0 голосов
/ 02 июля 2011

Вероятно, это действительно легко, если вы знаете, как, но я не знаю, и, потратив часы на поиски в Google, я должен спросить некоторых «настоящих» программистов, поскольку я, очевидно, не один.

Я могуПохоже, не найти учебник или пример кода, который будет работать для меня.Допустим, я просто хотел вывести «EuroDiesel 10» TR (прокрутите его наполовину, чтобы найти его), а затем мне нужны только данные с ТД № 1 и 9. Как мне это сделать?

Я такжехотите добавить выходные данные в базу данных SQL с отметкой даты, а также обновлять ее один раз в день.Я предполагаю, что это можно сделать с помощью 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";
}
?>

Я надеюсь, что вы, ребята, можете мне помочь, просто учитесь здесь ...

Спасибо!Art

1 Ответ

0 голосов
/ 02 июля 2011

Что касается XPath, я думаю /html/body/form/table/tbody/tr[normalize-space(td[1]) = 'EuroDiesel 10']/td[position() = 1 or position() = 9] должно подойти.Затем получите доступ к $val->textContent вместо nodeValue.

...