2014-10-14 5 views
0

웹 페이지에서 정보를 긁어 내기 위해 Xidel을 사용하고 있으며 페이지의 순서와 다른 순서로 정보를 내보내려고합니다.Xidel에서 내 보낸 변수의 순서를 변경하는 방법은 무엇입니까?

예 :이 코드는 제목, 다음 자막으로 내 보냅니다

<tr> 
<td></td> 
<td></td> 
<td></td> 
<td><a><font><b>{ location:=. }</b></font>{ title:=. }</a></td> 
<td>{ dates:=. }</td> 
<td></td> 
</tr> 

. Xidel에서 주문을 변경하는 방법이 있습니까?

답변

0

이 쉽게 될 수 있습니다으로 :

xidel -q page.html -e subtitle:=//h2,title:=//h1 

같은 뭔가도 작동하지만 것 (몇 가지 "-e"PARAMS로) 다음 이전 코드와 같은 그 것이다 첫 번째 그룹의 모든 자막과 모든 제목 당신이 원하는 아마없는 페이지, ...

xidel -q page.html -e "<div><h2>{subtitle:=.}</h2></div>+" -e "<div><h1>{title:=.}</h1></div>+" 

AFAIK에, 귀하의 경우 Xidel에는 주문 기능이 없습니다. 하지만 당신이 할 수있는 일은 값을 env로 저장하는 스크립트를 작성하는 것입니다. 변수는 xidel --output-format cmd (Windows 인 경우)와 (올바른 순서대로) 해당 변수/값을 에코/처리합니다.

Dirkk 당신의 라인 같은 것을 볼 수 있음으로, (안 그룹에) 좋은 팁을 주신

:이 도구를 사용한 적이

xidel -q page.html --xquery "for $i in //div return (concat('sub:=',$i/h2), concat('title:=',$i/h1))" 
+0

답변 해 주셔서 감사합니다. 실제 페이지는 제가 게시 한 것보다 더 복잡합니다. xidel page.html -e "{위치 : =.} {제목 : =.} 예를 들어 {날짜 :. =} + " 그러나 변수가 페이지의 순서대로 인쇄됩니다. 주문을 어떻게 바꿀 수 있습니까? 어떤 생각? –

+0

감사합니다. @MatrixView 변수를 저장/에코로 더 자세히 살펴 보겠습니다. 실행 가능한 옵션처럼 들립니다. –

0

을하지만, 얼핏 문서에와보고 제공 이 XQuery를 지원하는 다음과 같은 것 같아요 작동합니다 : 이것은 가정

xidel -q page.html --xquery "for $div in //div return ($div/h2, $div/h1)" --output-format xml 

당신은 즉, 모든 자막 첫째, 귀하의 페이지에 여러 개의 같은 DIV 요소가 먼저 개별적으로 자막과 함께 모든 타이틀을 정렬 할. 또한 더 구체적인 예제 XML을 제공하지 않았기 때문에 모든 div를 선택하고 반복합니다. 실제 HTML에서는 id 특성과 같은 더 많은 특징을 원할 것입니다.

+0

고마워요! 내가 해결하려고하는 것의 더 좋은 예를 보여주기 위해 코드를 업데이트했습니다. XQuery에서 어떻게 평가할 수 있습니까? –

+0

우선, 편집 할 수 있고 질문을 직접 수정할 수 있으면 업데이트 섹션이 필요 없습니다. XML은 기본적으로 동일합니다. '// tr'을 사용하여 모든 테이블 행을 선택하지만,이 페이지에 다른 테이블이 있다면 이것도 선택됩니다. 웹 페이지의 요소를 동일하게 식별하는 데 사용합니다 (예 : 아이디어, 또는 h1 또는 h2 헤더, 몇 가지 특성 링크 ... – dirkk