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

 

바로 소스코드를 보겠습니다. 여기서 중요한 것은 .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지식이 있어야 일단 재미를 위해서 해봅시다. 

써 보면서 공부하는 걸 추천드립니다. 

 

이 장에서는 네이버 첫 페이지의 데이터를 받아오는 크롤링을 한 번 보여드리겠습니다. 

 

파이썬을 실행해 봅시다. 파이썬을 설치 안 하신 분들은 파이썬 3.x 버전을 설치하시고 오시길 바랍니다. 파이참도 가능합니다. 

 

크롤링을 하는 프로그램을 '크롤러'라고 합니다. 

 

네이버 전체 크롤링 하기 

 

결과는 다음과 같습니다. 

네이버 크롤링

이 텍스트를 웹 브라우저에서 해석해서 초록색으로 배치가 잘 된 네이버의 화면을 우리에게 보여주는데요 웹은 대부분 HTML형태로 되어 있씁니다. HTML 텍스트를 받아온 다음에 여기에서 우리가 필요한 정보들을 파싱할 수 있습니다. 

 

다음 내용은 뷰티풀솝 사용 해서 파싱하는 것을 보여드리겠습니다. 

+ Recent posts