[python] 크롤링 BeautifulSoup

박주찬·2024년 5월 8일

python

목록 보기
3/10
post-thumbnail

Crawling 이란?

  • 파일, 이미지등 resource를 수집하는 기능을 주로 함.
  • 크롤링은 웹페이지의 구조가 변경(년간, 계절, 이벤트등)되면 변경된 구조를 인식 할 수 있도록
    파이썬 코드를 변경해야하나 Rest API 방식은 데이터를 제공하는 형식이 거의 변경이 없음.

Scraping 이란?

  • 웹페이지의 소스를 읽어서 특정 태그의 문자열 및 숫자등 데이터 수집
  • 데이터 구조(메타 정보)를 제공하지 않음으로 개발자가 웹페이지의 내용을 분석하여 구조를 파악해야함 (전부 해당)
  • HTML, CSS에 대한 사전 지식이 있어야함. (전부 해당)

BeautifulSoup 이란?

  • HTML 문서를 Python 객체로 자동변환하여 편리한 태그 검색을 지원
  • Web 페이지의 내용을 네트웍에 접속하여 HTML 태그를 메모리로 다운로드한 후 분석
  • 태그를 쉽게 검색하기위한 함수들이 제공됨으로 편리함.
  • 복잡한 데이터는 정규표현식을 사용 할 수 있음.
  • 정규표현식만을 이용하여 검색을 할 수 있으나 HTML의 복잡한 구조 때문에,
    Regular Expression(정규 표현식)과 BeautifulSoup을 같이 사용할 수 있음.
  • 데이터 수집시 사용자가 웹페이지를 이용하는 것처럼 상호 작용을 처리하기는 어려움.
    뷰티풀수프, 줄여서 뷰슾은 파이썬에서 사용할 수 있는 웹데이터 크롤링 라이브러리입니다.
    사실 Selenium은 완전히 크롤링을 위한 라이브러리가 아닌, 웹개발자들이 동적 웹이 제대로 작동하는지를 테스트하기 위해서 만든 모듈이라고 합니다.

1) BeautifulSoup 객체 구조

    html → <html> .... </html>
          head → <head> .... </head>
                title → <title>A Useful Page</title>
          body → <body> ..... </body>
                h1 →<h1>An Interesting Title</h1>
                div → <div> .... </div>

  		

<h1> 태그는 BeautifulSoup 객체구조 (html -> body -> h1)에서 두 단계만큼 중첨되어 있음 하지만 객체에서 가져올 때는 h1태그를 직접 가져옴
예) bs.h1 = (
           bs.html.body.h1 (다 같은 말)
           bs.body.h1 (다 같은 말)
           bs.html.h1 (다 같은 말)
                )

2) BeautifulSoup 객체 생성

   	bs = BeautifulSoup(html.read(), 'html.parser)
BeautifulSoup( 매개변수1 , 매개변수2 )
첫번째 매개변수: 객체의 근간이 되는 HTML 텍스트
두번째 매개변수: BeautifulSoup가 객체를 만들 때 쓰는 구문 분석기
profile
Diamond

0개의 댓글