이번 장에서는 뷰티풀솝의 중요한 부분을 설명드리겠습니다.

 

바로 소스코드를 보겠습니다. 여기서 중요한 것은 .find입니다. 

import bs4
html_str = "<html><div>hello</div></html>"  

bs_obj = bs4.BeautifulSoup(html_str, "html.parser")

print(type(bs_obj))  #bs_obj 변수 타입 출력
print(bs_obj)  #<html> <div> ~~ 이부분 출력
print(bs_obj.find("div")) # 여기서 .find는 찾는다라는 뜻으로 해석하시면 됩니다. 즉, div를 찾는다.  

결과 

print의 결과

다음 예시를 보겠습니다. 

import bs4 html_str =
""" <html>
<body>
      <ul> <li>hello</li>
             <li>bye</li>
             <li>welcome</li>
       </ul>
</body
</html> """


bs_obj = bs4.BeautifulSoup(html_str ,"html.parser")
ul = bs_obj.find("ul")  #ul를 찾습니다.
li = ul.find("li") print(li)  # ul안에 li라는 것을 찾습니다.

#결과는 어떨까요?  분명 <li>hello</li>라는 것이 뜰겁니다. 
#저기서 li라는 곳이 거슬리지 않나요? 지구에서 소멸하는 방법^^을 알려드리겠습니다.
# .text속성을 사용하면 됩니다. 

print(li.text)

#findAll을 써보겠습니다. findAll은 모든 요소를 리스트[] 형태로 추출해주는 기능입니다.
li1 = ul.findAll("li")
print(li1[1]) # bye를 뽑기위한 인덱스 li1[0]은 뭐죠? <hello>입니다. 

# 분명 위의 print는 <li> bye</li>라는 결과가 나올 것입니다. <li>라는 부분을 없앨려면 어떻게 해야되죠? 

print(li[1].text) 

결과 

결과 

 

이런 식으로 결과가 뜨게 됩니다. 좀 지루하죠? 개념부터 차근차근이 하기에는 너무 많기 때문에 다음 절에는 점프해서 재밌는 것을 해보겠습니다. 하지만, beautifulsoup의 속성만 알아두면 좋을 것 같습니다. 

 

  • .find() 특정 한 곳을 찾는다.
  • .text  ex) print(li.text) html태그를 지워버린다. 위에 참조
  • .findAll()  모든 요소를 리스트[] 형태로 추출해주는 기능
  • 뷰티풀솝을 사용하려면 HTML지식이 있어야 일단 재미를 위해서 해봅시다. 

+ Recent posts