2010-08-21 1 views
2

lxml로 html을 조작하는 것이 재미있었습니다. 이제는 필자의 필요에 맞는 특정 요소를 찾은 후에 실제 파일을 조작하고 싶습니다. 요소의 소스를 검색 할 수 있는지 알고 싶습니다.lxml을 사용하여 html 문서에서 파싱 된 요소의 원본 인 실제 줄을 볼 수 있습니까

나는 내 요소의 방법으로 sourceline을보고 나서 내 의자에서 위아래로 뛰어 올랐지 만 그것은 내가 원하는 것을 내게주지 않았다.

some_element.sourceline 

필자와 같이, 소스는 htm 소스가 목록 파일 일 때만 사용할 수 있으므로 줄 번호를 얻을 수 있습니다. 내가 더 잘 나는 명확하게하기 위해

theTree=html.fromstring(open(myFileRef).read()) 

the_elements=[e for e in theTree.iter()] 

으로 내 요소를 생성하는 것이 추가

, 나는 some_element.sourceline에 대한 값으로 없음을 받고 없습니다입니다 - 내 트리의 모든 27,000 요소에 대해이 테스트

한 가지 내가 상상하고있는 것은 HTML 소스를 표현식에서 사용하여 문서의 특정 위치를 찾거나 뭔가를 잘라내는 것입니다. 텍스트가 반드시 고유하지 않기 때문에 요소의 텍스트를 신뢰할 수 없습니다.

게시되었지만 중단 된 솔루션은 소스 리를 사용하는 것이었지만 목록으로 파일을 읽은 후에도 소스 라 인에 대해 없음 이외의 값을 얻을 수 없었습니다. 누군가가 sourceline을 사용하는 예제를 가지고 있는지 다른 질문을 게시 할 것입니다.

html.tostring (myelement)은 적어도 자동으로 인코딩을 변환하기 때문에 그냥 버렸습니다. 예 : HTML 소스 분명히

<b> KEY 1A.&nbsp;&nbsp;&nbsp;&nbsp;REGIONAL PRODUCTION <br> </b> 

html.tostring(the_element,method='html') 

내가 원래 그대로의 소스를 받고 있지 않다의

싹둑.

'<b> KEY 1A.&#160;&#160;&#160;&#160;REGIONAL PRODUCTION <br></b>' 
+0

'tree.tounicode (element)'메소드를 사용하지 않는 이유는 무엇입니까? –

+0

제안 해 주셔서 감사합니다. 내가 찾았지 만 내장 된 도움말에 따라 미리 파싱 된 요소가 있기 때문에 실제 원본을주지 않을 것이며 – PyNEwbie

+0

sourceline을 호출하면 분명히 줄이 생깁니다. –

답변

3

동일한 문제가 발생하여 문제가 발생했다고 생각합니다.

문서를 구문 분석 할 때 어떤 종류의 xslt 변환을 수행하면 element.sourceline이 손실된다고 생각합니다.

내가 문서를 변형시키지 않으면, 나는 술어를 잘 먹지만, etree.XSLT을 사용하면 모든 소스 데이터를 잃어 버리게된다.

관련 문제