2017-12-31 154 views
1

BeautifulSoup (bs4)를 사용하여 모든 자식을 검색하는 방법 (재귀가 아닌)?BeautifulSoup 태그의 모든 직계 하위를 얻는 방법?

<div class='body'><span>A</span><span><span>B</span></span><span>C</span></div>

는이 같은 블록을 얻으려면 :

for j in soup.find_all(True)[:1]: 
      if isinstance(j, NavigableString): 
       continue 
      if isinstance(j, Tag): 
       tags.append(j.name) 
       # Get siblings 
       for k in j.find_next_siblings(): 
        # k is sibling of first element 

이 할 수있는 청소기 방법이 있나요 :

block1 : <span>A</span> 
block2 : <span><span>B</span></span> 
block3 : <span>C</span> 

나는 이런 식으로 일을 해요?

답변

1

직접 자손 만 선택하려는 경우 recursive 인수를 False으로 설정할 수 있습니다.
당신이 제공하는 HTML과 예 : 나는이 문서에서 작동하는지 놓친

from bs4 import BeautifulSoup 

html = "<div class='body'><span>A</span><span><span>B</span></span><span>C</span></div>" 
soup = BeautifulSoup(html, "lxml") 
for j in soup.div.find_all(recursive=False): 
    print(j) 

<span>A</span> 
<span><span>B</span></span> 
<span>C</span> 
+0

감사합니다! – dbrrt

+0

@ dbrrt, 새해 복 많이받습니다! –

+0

2018을 기원합니다. – dbrrt