2015-01-19 2 views
1

bs4의 insert_after() 함수를 사용하려고하지만 두 번째 태그 뒤에 만 삽입하는 이유를 이해할 수 없습니까? 왜 각 후? 예를 들어 태그 대신 텍스트를 삽입하도록 코드를 변경하면 각 링크 후에 코드가 삽입됩니다.BeautifulSoup4의 Insert_after() 함수가 비정상적으로 작동합니다.

from bs4 import BeautifulSoup 
soup = BeautifulSoup('<p><a href="http://www.foo.com">this if foo</a><a href="http://www.bar.com">this if bar</a></p>') 
b = soup.new_tag('b') 
for link_tag in soup.findAll('a'): 
    link_tag.insert_after(b) 
print soup 

출력 : I는 각 태그 뒤에 삽입이 기능을 사용할 수있는 방법을

<html> 
    <p> 
     <a href="http://www.foo.com"> 
     this if foo 
     </a> 
     <a href="http://www.bar.com"> 
     this if bar 
     </a> 
     <b> 
     </b> 
    </p> 
    </body> 
</html> 

당신이 나에게 설명해 주시겠습니까?

답변

1

동일한 BeautifulSoup Tag을 여러 위치에 삽입하지 마십시오. 여기서 일어나는 일은 첫 번째 링크 다음에 태그를 삽입 한 다음 다음 반복에서 기본적으로 현재 링크 뒤에 동일한 b 태그를 이동한다는 것입니다.

:

루프에있는 모든 링크에 대한 새로운 태그를 생성

관련 문제