Web Crawling: Beautifulsoup

Seoyul Kim·2020년 4월 26일
0

Crawling

목록 보기
1/2

Web Crawling

parsing

  • 어떠한 웹 페이지에서 내가 원하는 데이터를 특정 패턴이나 순서로 추출하여 정보로 가공하는 것
  • 일련의 문자열을 의미있는 토큰으로 분해하고 이들로 이루어진 parse tree를 만드는 과정
  • 인터프리터나 컴파일러의 구성 요소 중 하나로, 입력 토근에 내제된 자료 구조를 빌드하고 문법을 검사하는 역할을 한다.

crawling

  • 웹상의 페이지를 수집해서 분류하고 저장한 후에 나중에 쉽게 찾아볼 수 있도록 하는 역할을 한다.
  • 데이터를 저장한 후 쉽게 찾을 수 있도록 인덱싱한다.

scraping

  • 테이터를 수집하는 모든 과정을 의미하며 크롤링은 스크래핑 방법 중 하나이다.

BeautifulSoup

  • 가상환경을 만들고 실행 후
conda create -n web_crawling python=3.8

conda activate web_crawling
  • beautifulsoup4 를 설치한다.
pip install beautifulsoup4
#웹사이트로 요청시 필요

pip install requests

BeautifulSoup 라이브러리의 활용

  • HTML 태그를 parsing해서 필요한 데이터만 추출
import requests
from bs4 import BeautifulSoup

# requests 라이브러리를 활용한 HTML page 요청
#res 객체에 HTML 데이터가 저장되고, res.text로 데이터를 추출할 수 있다.
req = requests.get('https://www.billboard.com/charts/hot-100')

#html page parsing
BeautifulSoup(HTML데이터, 파싱 방법)

#BeautifulSoup parsing
soup = BeautifulSoup(res.text, 'html.parser')

#필요한 데이터 검색
title = soup.find('title')

#필요한 데이터 추출
print(title.get_text())

find() & find_all()

  • 함수 인자로 찾고자하는 태그의 이름, 속성 등이 들어간다.
  • 원하는 태그를 함수의 첫번쨰 인자로 지정하고 속성:값의 dictionary 형태로 만들어 지정한다.
  • find(): 가장 먼저 검색되는 태그를 반환하며
  • find_all(): 전체 태그 반환
title_data = soup.find('h1')

title = soup.find('article', {'id':'name'})
detail = title.find_all('span', {'class':'pn'})

#인덱싱 가능
result = []
for num in detail:
	result.append(num)
    
print(result[0].text)

태그에 있는 id로 검색

title_data = soup.find(id='title')

HTML 태그와 CSS class를 활용해서 필요한 데이터를 추출

paragraph_data = soup.find('p', 'cssstyle')

0개의 댓글