2012-04-14 34 views
6

Từ nguồn html này:Sử dụng BeautifulSoup để trích xuất văn bản trước khi đứa con đầu lòng tag

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

tôi muốn trích xuất các văn bản Category:

Dưới đây là những nỗ lực của tôi sử dụng Python/BeautifulSoup (với sản lượng như bình luận - sau #)

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> 

Tôi mong đợi một "nút văn bản" khả dụng khi là đứa con đầu tiên. Bất kỳ đề xuất về cách tôi có thể giải quyết điều này?

+1

'parsed_div.contents [0] ' – Avaris

Trả lời

11

tôi khá chắc chắn những điều sau đây nên làm những gì bạn muốn

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

Điều đó sẽ trở lại một trường hợp NavigableString đó là khá nhiều giống điều như một trường hợp unicode, nhưng bạn có thể gọi unicode vào đó để lấy đối tượng unicode .

Tôi sẽ xem liệu tôi có thể kiểm tra điều này và cho bạn biết.

EDIT: Tôi chỉ xác nhận rằng nó hoạt động:

>>> 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

Awesome! Làm việc như người ở –

Các vấn đề liên quan