2011-07-02 3 views
0

どうしたらいいか分かりませんが、時間を費やした後には本当に簡単でしょう私は明らかにそうではないので、実際のプログラマーに尋ねなければなりません1。Xpathに一部のTDの出力しか得られません

私にとってはうまくいくチュートリアルやコード例が見つからないようです。 「EuroDiesel 10」TR(中途半端にそれを見つけるために)を出力したいとしたら、TD番号1と9のデータだけが必要です。それをどうやってやりますか?

出力データを日付スタンプ付きのSQL DBに追加するだけでなく、1日に1回更新する必要があります。私はこれがCronの仕事でできると仮定します。これは正しいのですが、私はデータを収穫したいそれぞれの価格表のために仕事をしなければいけませんか?

まずは正しいデータが必要です。これは私がこれまでに得たものです。

<?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"; 
} 
?> 

私は...ここに

感謝を学んで、あなたたちは私を助けることを願って! 芸術

+0

ここでは、解析しようとしているHTMLドキュメントに大きな問題があります。これは整形式ではありません。 XMLが 'DOMDocument :: loadHTMLFile'に対して必須ではないとしても、これは' DOMXPath'クラスに問題を引き起こす可能性があります。 –

+0

同意します!間違いなく、使いやすいHTMl文書ではありません。 – Art

答えて

0

XPathは、/html/body/form/table/tbody/tr[normalize-space(td[1]) = 'EuroDiesel 10']/td[position() = 1 or position() = 9]がすべきだと思います。次に、nodeValueではなく$val->textContentにアクセスします。

+0

Martinに感謝します。私は "予期しないT_STRING"というエラーが出ますが、私はそのロジックを見ています。それで少し修正して動作させることができます。 – Art

関連する問題