정적 크롤링을 위한 BeautifulSoup 라이브러리
BeautifulSoup 라이브러리는 HTML을 효율적으로 탐색하고, 원하는 정보를 손쉽게 추출하기 위한 라이브러리이다.
즉 BeautifulSoup 라이브러리를 사용해 HTML 코드에서 우리가 원하는 정보만 추출이 가능하다.
* BeautifulSoup 라이브러리 설치 방법 : https://2chaechae.tistory.com/51
[ 모각코+ 3일차 ] 설치 및 준비
[ 라이브러리 ] 라이브러리 : 필요한 기능을 수행할 수 있도록 준비된 함수와 메소드의 집합 정적 크롤링 라이브러리 [ requests ] http 요청을 쉽게 사용하기위해 만들어진 라이브러리 → 파이썬과
2chaechae.tistory.com
import requests # 라이브러리 불러오기
URL = '데이터를 받아오고 싶은 사이트'
raw = requests.get(URL) # get 함수 사용
print(raw) # 요청 성공 여부 출력
print(raw.text) # HTML 코드 출력
# 원하는 데이터 추출하기
target = '<div class="nums">'
if target in raw.text :
idx = raw.text.index(target)
print(raw.text[idx : idx + 100 ] ) # 100은 임의의 숫자( 원하는 HTML 태그까지 출력하기 )
target을 이용해서 데이터를 추출하는 방법은 데이터를 추출하는 것이 아니라 HTML 태그를 단순한 문자열 타입으로
처리해서 HTML을 텍스트로 출력했을 뿐이다. ( 문자열에서 target이 포함된 부분을 출력한 것임! )
하지만 BeautifulSoup 라이브러리는 문자열을 실제로 HTML 코드로 변환해준다.
BeautifulSoup 객체 생성하기
# BeautifulSoup 라이브러리 import
import bs4
# BeautifulSoup 객체 생성
bs4.BeautifulSoup(" HTML 데이터 ", " 데이터 타입 " )
문자열 타입인 raw.text를 실제 HTML 코드로 변환해 주기 위해서는 bs4의 BeautifulSoup 클래스 사용
import requests
import bs4
URL = 'https://tv.naver.com/r'
raw = requests.get(URL)
# get 함수를 이용해서 URL의 내용 얻어오기
html = bs4.BeautifulSoup( raw.text, 'html.parser' )
# HTML 데이터로 raw.text를 데이터 타입은 HTML 이므로 html.parser 넣어주기
# 클래스의 객체를 생성하면서 문자열을 HTML로 변환
* type 함수를 사용해서 raw.text와 html의 데이터 타입을 확인해보면 서로 다름을 확인할 수 있음
find 함수
find 함수는 인자로 받은 태그와 선택자와 처음 일치하는 데이터를 리턴
target = html.find('div', {'class' : 'nums'})
print(target)
원하는 데이터 태그가 <div class="nums">이면
find 함수의 첫번째 인자로 태그로 두번째 인자로 선택자를 넣어 원하는 태그의 내용만 출력하기
# 태그만 사용하는 경우
html.find('div')
# 선택자만 사용하는 경우
html.find(id = 'something1')
html.find(attrs = {'id':'something1'})
# 태그와 선택자를 모두 사용하는 경우
html.find('div', {'id' : 'something1'})
fina_all 함수
find 함수가 태그와 선택자가 일치하는 가장 첫 태그만 받아왔다면
find_all 함수는 일치하는 모든 데이터를 리스트 형태로 리턴
target = html.find('div', {'class' : 'nums'})
all_targets = target.find_all("span", {'class' : 'something2'})
for at in all_targets :
#print(at)
print(at.text) # 태그에서 내용만 받아오기
[ 7일차 미션 ]

import requests
import bs4
URL = 'https://tv.naver.com/r'
raw = requests.get(URL)
html = bs4.BeautifulSoup( raw.text, 'html.parser')
target = html.find('div', { 'class' : 'top100' })
balls = target.find_all('dd', { 'class' : 'chn'})
print("< 최근 인기 영상 >")
index = 1
for ball in balls :
print(index, ":", ball.text)
index += 1

저작권 출처 : https://cafe.naver.com/codeuniv
'DATA > [ 모각코+ 12월 과정 ] 웹 크롤링' 카테고리의 다른 글
| [ 모각코+ 9일차 ] 정적 크롤링 사용해보기 ④ (0) | 2021.12.30 |
|---|---|
| [ 모각코+ 8일차 ] 정적 크롤링 사용해보기 ③ (0) | 2021.12.29 |
| [ 모각코+ 6일차 ] 정적 크롤링 사용해보기 ① (0) | 2021.12.28 |
| [ 모각코+ 5일차 ] 선택자 (0) | 2021.12.25 |
| [ 모각코+ 4일차 ] HTML (0) | 2021.12.24 |