인프런 커뮤니티 질문&답변

역학자님의 프로필 이미지
역학자

작성한 질문수

남박사의 파이썬으로 봇 만들기 with ChatGPT

5강 중 span.decompose() 관련 문의

작성

·

11

0

5강 기상청사이트 날씨모듈 구현1 중에서

 

다음과 같이 날씨 태그를 살펴보는데

<span class="tmp">4.6<small>℃</small> <span class="minmax"><span>최저</span><span>-</span><span>최고</span><span>-</span></span></span>

 

_span_tmp.span.decompose() 을 통하여

<span class="tmp">4.6<small>℃</small></span>

남기고 모두 지우는데

 

제가 알기로는 span 태그가 모두 사라지는 걸로 알고 있었는데

처음 span 태그는 원래 사라지지 않는건가요??

 

보통의 블로그에서는 처음부터 삭제대상 태그인 경우가 없었던지라 좀 당황스럽습니다.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

역학자님께서 질문하신 decompose() 함수는 BeautifulSoup에서 특정 태그나 노드를 제거할 때 사용됩니다. 예를 들어 span.decompose()는 해당 span 태그와 그 안에 있는 모든 콘텐츠를 제거합니다. 하지만 여기서는 span.tmp 태그 내부의 특정 자식 노드(span.minmax)만을 제거하고자 사용하는 것으로 보입니다.

정확히 말씀드리자면, span.decompose()는 해당 span 자체를 제거합니다. 따라서 코드에서 span.decompose()를 정확하게 어떤 위치에서 호출하는지에 따라 남아있는 태그가 달라질 수 있습니다.

질문에서 제공해주신 HTML 구조를 보았을 때, <span class="tmp"> 태그 안의 특정 <span> 태그만 제거하고 class="tmp"를 가진 태그는 남겨두고 싶으셨던 것 같습니다. 이 경우 코드는 span.minmax.decompose() 처럼 특정 자식 태그를 지정하여 제거하셔야 합니다.

질문 내용과 관련된 추가 정보와 유사한 다른 질문으로 도움을 주실 수 있는 게시물을 안내드리오니, 아래의 링크를 참고하시길 바랍니다.

  1. div 태그 질문드립니다.: 여러 태그와 클래스명을 다룰 때 어떻게 CSS 셀렉터를 사용할 수 있는지에 대해 설명된 게시물입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

역학자님의 프로필 이미지
역학자
질문자

url2 = f"https://www.weather.go.kr/w/wnuri-fct2021/main/current-weather.do?code={dong}&unit=m%2Fs&aws=N&lat={lat}&lon={lon}"
        r2 = requests.get(url2)
        bs = BeautifulSoup(r2.text, "lxml")
        _span_tmp = bs.select_one("span.tmp")
        _span_tmp.span.decompose()

 

위 코드를 통하여

변경전

<span class="tmp">4.6<small>℃</small> <span class="minmax"><span>최저</span><span>-</span><span>최고</span><span>-</span></span></span>

 

변경후

<span class="tmp">4.6<small>℃</small></span>

 

로 바뀌었습니다.

 

말씀하신대로 span.minmax.decompose() 를 통해서 변경되었으면 이해할수있겠는데

 

처음 부분의 span 도 같이 삭제 안되고 남는 이유가 궁금해서 문의 드립니다.

 

 

역학자님의 프로필 이미지
역학자

작성한 질문수

질문하기