Python

[Python] 웹크롤링? 웹 스크래핑

2022. 8. 28. 23:16

웹크롤링? 웹 스크래핑!


📌 간단하게 에 알아보기

더보기

웹 (World Wide Web)

월드와이드웹(World Wide Web) 인터넷에 연결된 컴퓨터를 통해 사람들이 정보를 공유할 수 있는 전 세계적인 정보 공간

간단히 웹(Web)이라고 부르는 경우가 많다.
인터넷에서 HTTP 프로토콜, 하이퍼텍스트, HTML 형식 등을 사용하여 그림과 문자를 교환하는 전송방식을 말하기고 함.

 

웹 브라우저 

HTML, CSS, JS로 이루어진 웹페이지를 사용자에게 보여주기 위한 프로그램 
 예 : 사파리, 파이어폭스, 크롬, 엣지, 오페라, 웨일 등


웹크롤러 

crawl ; 기어가다, 서서히 가다

웹페이지에 연결되어 있는 모든 링크를 다 따라가서

리스트로 만든 후, 인덱싱을 한다.

이것을 데이터베이스에 저장한다.

 

< 누가한다? 검색엔진의 크롤링 봇!

 

웹스크래핑

특정 웹사이트 안에서 스크래퍼로 데이터를 다양한 형태로 긁어오는 것.


BeautifulSoup 을 이용한 웹 스크래핑

 

BeautifulSoup ?

HTML 태그를 파싱 해서 필요한 데이터만 추출하는 기능을 제공하는 라이브러리

* HTML 형태의 구문을 분석하는 것

 

1. 스크래핑 하고자 하는 웹페이지 접속

2. 주소 복사

3. 복사한 주소를 requests.get()안에 추가

import requests                 # http를 호출할 때 사용하는 모듈
from bs4 import BeautifulSoup

# requests를 이용해 원하는 웹페이지의 소스코드를 불러옴.
res = requests.get("https://news.mt.co.kr/mtview.php?no=2022082609391664699")

# BeautifulSoup을 이용해 파싱
soup = BeautifulSoup(res.content, 'html.parser')
print(soup)

 

여기서 타이틀(title)을 불러오고 싶다면?

파싱해서 할당한 soup 객체에 find 메서드를 사용해서 title(태그)을 검색한다.

soup.find('title')


 

BeautifulSoup에서 자주 사용하는 메서드(method)

메서드(Method) 역할
.find  태그명, 속성정보로 매칭되는 하나의 결과만 가져옴 
.find_all  태그명, 속성정보로 매칭되는 모든 결과를 리스트로 가져옴 
.text  해당 태그의 텍스트(text)를 가져옴
.get  해당 태그의 특정 속성(attribute)의 값을 가져옴
.select  CSS Selector를 통해 매칭되는 모든 결과를 리스트로 가져옴.

 

# h2라는 태그를 모두 검색해서 리스트 형태로 저장
h2s = soup.find_all('h2')
h2s

 

# get을 통해 class라는 속성(Attribute)의 값을 불러옴.
for h2 in h2s:
    print(h2.get('class'))