2010-03-24 28 views
5

Tôi đã có một tài liệu như thế này:Sử dụng BeautifulSoup để trích xuất các nút anh em giữa hai nút

<p class="top">I don't want this</p> 

<p>I want this</p> 
<table> 
    <!-- ... --> 
</table> 

<img ... /> 

<p> and all that stuff too</p> 

<p class="end>But not this and nothing after it</p> 

tôi muốn trích xuất tất cả mọi thứ giữa p [class = top] và p [class = cuối] đoạn văn.

Có cách nào hay để tôi có thể làm điều này với BeautifulSoup không?

Trả lời

8

node.nextSibling thuộc tính là giải pháp của bạn:

from BeautifulSoup import BeautifulSoup 

soup = BeautifulSoup(html) 

nextNode = soup.find('p', {'class': 'top'}) 
while True: 
    # process 
    nextNode = nextNode.nextSibling 
    if getattr(nextNode, 'name', None) == 'p' and nextNode.get('class', None) == 'end': 
     break 

tình trạng phức tạp này là để đảm bảo rằng bạn đang truy cập thuộc tính của thẻ HTML và không chuỗi các nút.

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