뭉지(moonz)
작은 발자국들의 위대한 여정
뭉지(moonz)
  • All (201)
    • Test Code (4)
    • 백엔드 개발하며 작성한 (26)
      • Spring (17)
      • 데이터베이스 (6)
      • 기억할 내용 (3)
    • 언어 (53)
      • Java (25)
      • node.js (7)
      • Python (21)
    • 클라우드 (6)
    • Algorithm & Data Structure (51)
      • 개념 (15)
      • 문제 풀이 (36)
    • 유용한 모든 것 (16)
    • monologue (7)
      • 업무 노트 (1)
      • 관리 로그 (0)
      • 내 이야기 공책 (6)
    • Project (2)
    • TroubleShooting (8)
    • 지식 (18)
      • Machine Learning (6)
      • Review (7)
      • Web (5)
    • Computer Science (5)

블로그 메뉴

  • 홈
  • 태그

인기 글

최근 글

최근 댓글

전체 방문자
오늘
어제

티스토리

hELLO · Designed By 정상우.
뭉지(moonz)

작은 발자국들의 위대한 여정

Beautiful Soup 사용하여 html 분석하기
언어/Python

Beautiful Soup 사용하여 html 분석하기

2020. 9. 7. 19:01
반응형

Beautiful Soup

---------------------------------------------------------------------------------------------------------------------------------

 

▶파이썬에서 웹 스크레이핑할 때 편리한 라이브러리 =>다운로드된 HTML을 분석 & 데이터 추출하는 과정.

▶단, 데이터를 다운로드 기능은 없음. => urllib를 이용하여 다운로드.

▶urllib는 따로 설치하지 않아도 됐지만, Beautiful Soup은 설치해줘야한다.

▶PyPI(Python Package Index 줄임말) ; 파이썬 패키지

▶pip ; 파이썬 패키지 관리 시스템 (파이썬 패키지 시스템을 설치할 수 있음.) =>pip로 Beautiful  Soup를 설치해야한다.

 

1. Beautiful Soup 설치

ㄱ. 먼저 cmd창에서 pip3.7로 beautifulsoup4를 설치해야한다. 

WARNING을 보니 업그레이드를 해줘야한다는 것같아서 이후에 업그레이드를 해주긴했다.

ㄴ. python 실행창에서 from bs4 import BeautifulSoup' 을 쳐주면 에러가 발생하지 않는 것을 확인할 수 있다.

(from bs4'를 안 넣어주면 에러 발생한다.)

2. beautifulsoup을 활용하는 방법 - 예제

BeautifulSoup를 이용하여 HTML을 분석해보자!

 

1. html 문서 작성

BeautifulSoup는 다운로드 기능이 없기 때문에 직접 간단한 문서를 만들어보겠다.

html="""
<html><body>
 <h1>스크레이핑 연습</h1>
 <p>웹페이지를 분석해보기</p>
 <p>데이터 정제하기..</p>
</body>
</html>
"""

 

2. 메모장에 beautifulsoup라이브러리를 불러와서 html분석하여 문서 출력.

a. BeautifulSoup를 불러온다.

from bs4 import BeautifulSoup

b. 문서를 작성한다.

c. html을 분석한다.

#html을 분석한 객체는 soup

soup = BeautifulSoup(html, 'html.parser')

 

 

 

 

 

 

 

 

▶BeautifulSoup는 두개의 인자를 갖는 인스턴스.

 

d. 원하는 요소(태그)에 접근한다.

h1 = soup.html.body.h1
p1 = soup.html.body.p

e. 원하는 요소의 내용을 출력한다.

#태그를 제외한 결과를 얻고싶다면 .string을 해주면 된다.

print("h1=" + h1.string)
print("p=" + p.string)

Q. 근데 두번째 p태그는 어떻게 출력해야할까?

 

다음은 html-body-태그들의 관계이다.

▶html과 body는 부모-자식관계.

▶body와 h1, p태그들도 부모-자식관계.

▶태그들끼리는 형제(Sibling)관계이다.

▶여기서 P태그를 p1변수에 넣었다.

▶그럴때, 그 옆의 p태그는 이렇게 표현한다.

   p1.next_siblings.next_siblings

 

Q.왜 두번이나 써줘야할까?

만약 한번만 써주게 되면 공백이 출력된다.

(내가 알기론,) p1.next_siblings => </p>옆에 공백이 출력되는 것이다.

한번 더 적어주면 <p>~ 가 출력되게 된다.

 

A.

p2 = p1.next_sibling.next_sibling

print("p=" + p2.string)

[결과]

 

반응형
저작자표시 (새창열림)

'언어 > Python' 카테고리의 다른 글

파이썬 기초 문법2 (기본 입출력과 반복문&조건문)  (0) 2021.01.02
라즈베리파이의 GPIO  (0) 2020.11.06
기상청 날씨 데이터 cmd창에서 직접 불러오기  (0) 2020.09.05
기상청 날씨 데이터불러오기  (0) 2020.09.05
파이썬을 이용한 웹데이터 다운로드하기2_urlopen() 함수  (0) 2020.08.28
    '언어/Python' 카테고리의 다른 글
    • 파이썬 기초 문법2 (기본 입출력과 반복문&조건문)
    • 라즈베리파이의 GPIO
    • 기상청 날씨 데이터 cmd창에서 직접 불러오기
    • 기상청 날씨 데이터불러오기
    뭉지(moonz)
    뭉지(moonz)
    제가 깨달은 것을 정리하는 공간입니다. 🧡

    티스토리툴바