2012-08-03 3 views
3

나는 소스 코드 HERE으로이 테이블을했습니다 :XPATH와 테이블에서 특정 데이터를 얻기

enter image description here

:

나는 모든 행을 얻으려면 enter image description here

, 내가 사용 할 수있는 이십 기가 바이트

string-join($doc//*[@id='salaries']/tbody/tr/normalize-space(.), '
')을 사용하여 예상되는 최종 출력은 다음과 같습니다.

1985-86 Los Angeles Lakers NBA $2,030,000 
1987-88 Los Angeles Lakers NBA $2,000,000 
1988-89 Los Angeles Lakers NBA $3,000,000 

내 질문은, 최종 출력에서 ​​(이 예에서는 NBA라는 이름의) 세 번째 열을 제거하는 방법이를 얻는 것입니다 :

1985-86 Los Angeles Lakers $2,030,000 
1987-88 Los Angeles Lakers $2,000,000 
1988-89 Los Angeles Lakers $3,000,000 

추신 : 그 열이 그 장소에 항상 확실하지 않다, 하지만 앵커 a[contains(@href, 'league')]

+2

보다는 사진, 원본을 보일 수 있는가? – choroba

+0

@choroba, 그래, xD ... 게시 된 업데이트 됨 :) – Enissay

답변

2

이 XPath는 2.0 표현 : 제공된 XML 문서 평가

for $i in 1 to count(/tbody/tr), 
     $r in /tbody/tr[$i], 
     $s in string-join($r/td[not(position() eq 3)]/normalize-space(.), ' ') 
    return 
    concat($s, '
') 

:

:

<tbody> 
<tr class="" data-row="0"> 
    <td align="left">1985-86</td> 
    <td align="left"><a href="/teams/LAL/1986.html">Los Angeles Lakers</a></td> 
    <td align="left"><a href="/leagues/NBA_1986.html">NBA</a></td> 
    <td align="right" csk="2030000">$2,030,000</td> 
</tr> 
<tr class="" data-row="1"> 
    <td align="left">1987-88</td> 
    <td align="left"><a href="/teams/LAL/1988.html">Los Angeles Lakers</a></td> 
    <td align="left"><a href="/leagues/NBA_1988.html">NBA</a></td> 
    <td align="right" csk="2000000">$2,000,000</td> 
</tr> 
<tr class="" data-row="2"> 
    <td align="left">1988-89</td> 
    <td align="left"><a href="/teams/LAL/1989.html">Los Angeles Lakers</a></td> 
    <td align="left"><a href="/leagues/NBA_1989.html">NBA</a></td> 
    <td align="right" csk="3000000">$3,000,000</td> 
</tr> 
</tbody> 

이 원하는 정확한 결과를 생성 컬럼의 위치가 고정되도록 보장되지 않으므로 제외 할 경우 467,

, 사용

for $i in 1 to count(/tbody/tr), 
     $r in /tbody/tr[$i], 
     $s in string-join($r/td[not(starts-with(a/@href,'/leagues'))] 
           /normalize-space(.), ' ') 
    return 
    concat($s, '&#xA;') 
+0

Awsome, 이 : 오 ... 평소처럼 완벽하게 :) – Enissay

+0

@Enissay : 오신 것을 환영합니다. 나는 궁금하다 - 당신의 플랫폼은 무엇입니까? 특정 XPath 2.0 프로세서를 어떤 호스트 언어로 사용하고 있습니까? –

+0

음, 이전 질문에서 말했듯이 Web-Harvest의 스크립트에서 이것을 사용하고 있습니다 ... http : //web-harvest.sourceforge.net/samples.php ... 여기에 몇 가지 예가 있습니다. 귀하의 질문 :) – Enissay

2

세 번째 열을 exlude하려면

tbody/tr/td[position()!=3] 

이 포함 된 링크를 exlude하기 위해 사용 거기에 '리그'를 포함, 당신은

을 사용할 수 있습니다 16,
tbody/tr/td[not(contains(a/@href,'league'))] 
+0

음, 이미 시도했지만 위의 최종 출력을 얻을 수 없었습니다./ – Enissay

관련 문제