requests와 BeautifulSoup를 이용한 웹사이트 크롤링

  1. requests란?
  2. BeautifulSoup란?
  3. 네이버북 크롤링
  4. 마치며

requests란?


  • 크롤링을 하려는 웹사이트는 HTML 문서로 이루어져 있다.
  • 이러한 HTML로 이루어진 웹사이트를 크롤링 하려면 HTML 문서를 가져오도록 request 해야 한다.
  • 그러기 위해서 파이썬에서 제공하는 requests 라이브러리를 이용해서 크롤링 하려는 웹사이트 HTML 문서를 가져오려고 한다.
      requests.get('https://book.naver.com/bookdb/book_detail.naver?bid=1')
    

BeautifulSoup란?


  • requests를 이용하여 가져온 HTML 내용을 출력해보면 내용이 매우 복잡하고, 이 내용을 어떻게 써야할지 막막하다.
  • 이를 해결하기 위해 사용하는 BeautifulSoup는 크롤링 시 사용되는 파이썬의 라이브러리 중 하나이다.
  • requests를 이용하여 가져온 HTML 내용을 사용자 입맛에 맞게 가공하여 사용한다.
  • BeautifulSoup에 가져온 문서에 .content를 하고, “html.parser”를 실행하면, 웹사이트에서 F12키를 눌러 확인할 수 있는 HTML이 보여지게 된다.
      soup = BeautifulSoup(response.content, "html.parser")
    
  • 이 후, 앞서 말했듯이 find, findAll과 같은 BeautifulSoup에서 제공하는 함수를 이용하여 사용자 입맛에 맞게 가공하면 된다.
      h2_tag = soup.findAll('h2')
    

네이버북 크롤링


  • 나는 앞서 설명한 requests와 BeautifulSoup 라이브러리를 이용하여, 네이버북을 크롤링할 계획이다.
  • 예스24, 알라딘 등과 같은 도서 판매 웹사이트에서 작업을 안 한 이유는 네이버가 친숙하기도 하고, 해당 사이트들은 HTML을 까보니 데이터 정제하기가 까다로웠다.(한마디로 귀찮았다.)

마치며


  • 데이터 크롤링을 알아보고 시작한 이유는 현재 진행하고 있는 도서 대출 서비스 앱에서 도서 정보를 DB에 등록해놔야 하는데, 나는 이 작업을 내가 수작업으로 하기 귀찮았다…
  • 그래서 데이터 크롤링으로 도서 정보를 가져오고, 해당 도서를 DB에 추가하려고 제작하였다.
  • 또, 이러한 크롤링, DB에 정보 추가 작업을 내가 수작업으로(직접 파이썬을 실행시키고, 산출물을 DB에 추가하는 작업) 하기 싫어서, Github Action을 이용하여 CI / CD가 되도록 하였다.