2017-10-19 1 views
2

저는 일부 HTML 요소에서 일부 텍스트를 긁어내는 스크립트를 파이썬으로 작성했습니다. 필자가 작성한 스크립트를 구문 분석 할 수 있습니다. 그러나 문제는 데이터가 그 사이의 거대한 공간으로 파싱된다는 것입니다. .strip() 메서드로 시도했지만 결과에 아무런 영향을 미치지 않았습니다. 어떻게 해결할 수 있습니까?결과 사이에 큰 공백을 제거 할 수 없습니다.

하는 HTML 요소 :

html=""" 
<div class="organisation-details"> 

    <div class="personnel shaded"> 
         <h3>KEY PERSONNEL</h3> 
         <p> 
           Director: Andrew Bickerton<br> 
           Director: Andrew Connor<br> 
           Office Manager: Tom Marchant<br> 
         </p> 
        </div> 

    <div class="company-type shaded"> 
         <h3>COMPANY TYPE</h3> 
         <p> 
                 Importer 
         </p> 
        </div> 

    <div class="company-details shaded"> 
         <h3>COMPANY DETAILS</h3> 
         <p> 
           Year Established: 1984 <br> 
                 VAT No: GB 413 3611 93<br> 
                 No of Employees: 1-20<br> 
         </p> 
        </div> 


</div> 
""" 

이 스크립트 :

from lxml.html import fromstring 

tree = fromstring(html) 
for title in tree.cssselect(".organisation-details"): 
    key = title.cssselect("h3:contains('KEY PERSONNEL')+p")[0].text_content().strip() 
    details = title.cssselect("h3:contains('COMPANY DETAILS')+p")[0].text_content().strip() 
    ctype = title.cssselect("h3:contains('COMPANY TYPE')+p")[0].text_content().strip() 
    print(key,details,ctype) 

출력 나는 데 :

Director: Andrew Bickerton 
           Director: Andrew Connor 
           Office Manager: Tom Marchant Year Established: 1984 
                 VAT No: GB 413 3611 93 
                 No of Employees: 1-20 Importer 

난 후 그 결과 (또는 가까이 아무것도) :

Director: Andrew Bickerton 
Director: Andrew Connor 
Office Manager: Tom Marchant 
Year Established: 1984 
VAT No: GB 413 3611 93 
No of Employees: 1-20 
Importer 

답변

2

key, detailsctype에는 문자열 중간에 여러 줄과 공백이 포함되어 있습니다. 그것들을 줄 바꿈으로 나누고 각 항목을 제거해야합니다. 같은 뭔가 :

for piece in key.split('\n'): 
    print(piece.strip()) 

detailsctype에 대해 반복합니다.

+0

당신은 보석입니다. 그것은 트릭을했다. 고마워. – SIM

0

브라우저에서 HTML을 선물하면 문자열의 시작과 끝 부분에있는 외부 공백에 아무런주의를 기울이지 않습니다. 파이썬 (또는 다른 프로그래밍 언어)은 문자 그대로 공백을 사용합니다. 우연히도 어제 나 비슷한 상황에 처해있었습니다.

관련 문제