BeautifulSoup
데이터를 추출하는데 필요한 기능이 들어 있는 파싱(parsing)라이브러리
웹 스크래핑에 활용할 수 있습니다.
파싱 : 받아온 데이터에서 필요한 내용만 추출하는 것
스크래핑(scraping) : 컴퓨터 프로그램이 다른 프로그램으로부터 들어오는 인간이 읽을 수 있는 출력으로부터 데이터를 추출하는 기법
예제를 통해 이해하는 것이 빠를 것 같습니다.
Ex
import requests
from bs4 import BeautifulSoup
# url을 정의하고 requests library를 이용하여 get 요청 > html 값을 text로 받아옵니다.
url = "https://finance.naver.com/sise/"
response = requests.get(url).text
# BeautifulSoup 객체 생성, html.parser 를 parser로 사용
soup = BeautifulSoup(response, "html.parser")
# BeautifulSoup html > body > h1 Tag
h1 = soup.html.body.h1
# h1 Tag string
print(h1.string)
print(soup.html.body.h1.string)
# BeautifulSoup 객체의 html > body > p First Tag 첫 줄
p1 = soup.html.body.p
print(p1.string)
# p1 다음 줄
p2 = p1.next_sibling.next_sibling
print(p2.string)
# print all of p tag
for i in soup.find_all('p'):
print(i.string)
print(i.get_text())
# find body tag
body_tag = soup.find('body')
# 단일 문장을 뽑는 방법
# body는 여러 문장이기 때문에 출력 불가
body_tag.string
# 오류는 나지 않지만 값이 안나옴
# 여러 문장을 뽑는방법 1
body_tag.get_text() # get_text()는 단일 문장을 뽑을 땐 사용불가
body_tag.get_text(strip=True) # 이스케이프 코드를 출력하지 않는 방법
# 여러 문장을 뽑는방법 2
for i in body_tag:
print(i.string)
# 여러 문장을 뽑는방법 3
for i in soup.find_all('body'):
print(i.get_text())
for i in soup.findAll('body'):
print(i.get_text())
# id값으로 문자열 뽑기
main_area = soup.find(id='main-area').string
# attrs : 속성값 모두 출력
a_tag = soup.html.body.ul.li.a
print(a_tag.attrs)
# 속성값 중 'href' 값 출력
print(a_tag['href'])
print(a_tag.attrs['href'])
# a태그의 'href' 값과 문장 모두 출력
for i in soup.find_all('a'):
print(i.attrs['href'])
print(i.string)
'SW > Python & Django' 카테고리의 다른 글
[Django] Test Driven Development, TDD (0) | 2021.07.01 |
---|---|
[Python] 객체지향프로그래밍 - OOP (Object Orientated Programming) (0) | 2021.06.14 |
[Python] exe 파일 만들기 (PyInstaller) (0) | 2021.06.04 |
[Python] GIL (0) | 2021.05.31 |
[Python] 2차원 리스트 회전시키기 (0) | 2021.04.26 |
Comment