2012-04-14 3 views
6

이 html 소스에서 첫 번째 자식 전에 텍스트를 추출 :사용 BeautifulSoup로 태그

<div class="category_link"> 
    Category: 
    <a href="/category/personal">Personal</a> 
</div> 

나는 여기에 텍스트를 Category:

을 추출 할 주석으로 출력 파이썬/BeautifulSoup로를 (사용하여 내 시도가 있습니다 - #)

parsed = BeautifulSoup(sample_html) 
parsed_div = parsed.findAll('div')[0] 
parsed_div.firstText() # <a href="/category/personal">Personal</a> 
parsed_div.first() # <a href="/category/personal">Personal</a> 
parsed_div.findAll()[0] # <a href="/category/personal">Personal</a> 

나는 "텍스트 노드"가 첫 번째 자식으로 제공 될 것으로 기대합니다. 이 문제를 어떻게 해결할 수 있을지에 대한 제안이 있으십니까?

+1

'parsed_div.contents [0]' – Avaris

답변

11

나는 다음 당신이

parsed.find('a').previousSibling # or something like that 

이 꽤 많이 unicode 인스턴스와 동일한 것입니다 NavigableString 인스턴스를 반환 즉, 원하는 일을해야 꽤 확신 해요,하지만 당신은 해당에 unicode를 호출 할 수 유니 코드 개체 을 얻으십시오.

내가 이것을 시험해보고 알 수 있는지 알게 될 것입니다.

편집 : 난 그냥 작동하는지 확인 :

>>> from BeautifulSoup import BeautifulSoup 
>>> soup = BeautifulSoup('<div class=a>Category: <a href="/">a link</a></div>') 
>>> soup.find('a') 
<a href="/">a link</a> 
>>> soup.find('a').previousSibling 
u'Category: ' 
>>> 
+0

신난다! 매력처럼 작동했습니다. –