2011-07-02 2 views
0

방법을 알고 있지만 시간이 지나면 쉽게 알 수 있습니다. 인터넷을 통해 정상적인 프로그래머에게 물어볼 필요가 있습니다. 분명히 아닙니다. 하나.Xpath에서 일부 TD 만 출력 할 수 없음

나에게 맞는 튜토리얼이나 코드 예제를 찾지 못하는 것 같습니다. "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"; 
} 
?> 

난 그냥 ... 여기

감사를 배우고, 너희들이 나를 도울 수 있기를 바랍니다! 미술

+0

여기에서 경험할 수있는 주요 문제는 올바른 형식이 아닌 구문 분석하려는 HTML 문서에 있습니다. DOMDocument :: loadHTMLFile에 XML이 필수가 아니더라도 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