Beautiful Soup
---------------------------------------------------------------------------------------------------------------------------------
▶파이썬에서 웹 스크레이핑할 때 편리한 라이브러리 =>다운로드된 HTML을 분석 & 데이터 추출하는 과정.
▶단, 데이터를 다운로드 기능은 없음. => urllib를 이용하여 다운로드.
▶urllib는 따로 설치하지 않아도 됐지만, Beautiful Soup은 설치해줘야한다.
▶PyPI(Python Package Index 줄임말) ; 파이썬 패키지
▶pip ; 파이썬 패키지 관리 시스템 (파이썬 패키지 시스템을 설치할 수 있음.) =>pip로 Beautiful Soup를 설치해야한다.
1. Beautiful Soup 설치
ㄱ. 먼저 cmd창에서 pip3.7로 beautifulsoup4를 설치해야한다.
ㄴ. 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 |