2012-12-13 4 views
0

DOMXpath가있는 테이블이 많은 페이지를 긁어내는 데 약간의 문제가 있습니다.Xpath 표 표 내

레이아웃이 정말 못생긴다. 즉, 테이블 내의 테이블 내에서 콘텐츠를 가져 오려고하는 것입니다. 독립 실행 형 테이블과, 내가 그것을 만들기 위해 "TBODY"태그를 제거 할 필요가 끝없는 내가 발견 실험 후 지금

html/body/table/tbody/tr[3]/td/table[1]/tbody/tr[2]/td[1]/table[1]/tbody/tr[3]/td[4] 

: 사용 방화범 FirePath 나는 테이블 요소에 대해 다음과 같은 경로를 얻고있다 작업. 그러나 이것은 테이블 내의 테이블에 대해서는 충분하지 않은 것처럼 보입니다. 그럼 내 질문은 어떻게하면 테이블 내에서 테이블 내에서 최상의 컨텐트를 얻을 수 있습니까? 에 대해 어떻게 1

+0

원하는 요소를 자신에게 아래의 경로를 작업 .. 아이디어를 제공합니다. 파이어 버그를 (당신이 보았 듯이) 원래 문서를 정확하게 반영하지 않는 것으로 믿지 마십시오. 우리는 "정말 못생긴"HTML을 보지 않고는 당신을 도울 수 없습니다. – salathe

+0

@salathe 좀 더 노력했지만 작동하지 못했습니다. 나는 지금 http://www.pjh.org/se/XpathProblemFile.zip에 그것을 업로드했다 - 아마 당신은 그것을 빨리 볼 수있다. – Peter

+0

이제 우리는 그 파일에서 긁어 모으고 자하는 것이 정확히 무엇인지 알아야 할 것 같습니다. 당신이 필요로하는 콘텐츠를 얻는 다른 방법, 깔끔한 방법을 살펴볼 가치가 있습니다. 예를 들어, 테이블 셀에는 Firebug 경로와 같은 것을 사용하려는 것이 아니라 대상에 지정할 수있는 특정 "클래스"속성 또는 내용에 일부 패턴이 있습니다. – salathe

답변

0

:

//*[contains(text(),"GRABME")] 

나는 그것이 당신이 원하는 것을 아마 알고,하지만 당신은 아이디어를 얻을

나는 내가 여기 긁어하려고 파일을 업로드했습니다. 패턴을 식별하고 그 패턴을 사용하여 xpath를 구성하십시오.

1

내가 쫒는의 접근 방식과 함께

당신은 내가 .. 다른 테이블 안에 테이블의 값을 얻으려면 복잡하지 아니라 HTML 형식의 소스를 폐기 나는이 같은 문제를 겪었 나는이 같은 기능의 일부 시리즈 얻고 싶은 부분 :

function parse_html() {//gets a specific part of the table i chose to extract the contents 
    $query = $xpath->query('//tr[@data-eventid]/@data-eventid'); //gets the table i want 
    $this->parse_table(); 
} 
function parse_table() {// 
    $query = $xpath->query('//tr[@data-eventid="405412"]/td[@class="impact"]/span[@title]/@title');...etc//extracts the content of the table 
    $this->parseEvaluate(); 
} 
function parseEvaluate(){ 
    ...verifying values if correct 
} 

그냥