[웹 기초] 웹 스크래핑 VS 웹 크롤링

2024. 4. 2. 16:40·프로그래밍/WEB

웹 상에서의 데이터 추출은 웹 페이지의 HTML 구조를 파싱하고 원하는 정보를 추출하는 과정을 뜻한다. 이러한 과정을 진행할 때 가장 대표적으로 쓰이는 방법으로는 웹 스크래핑과 웹 크롤링이 있다. 오늘은 이 두가지 방법과 데이터 추출시의 규제를 정해놓은 파일인 robots.txt에 대해서 알아보자.


웹 스크래핑  

웹 스크래핑은 웹 페이지에서 원하는 정보를 추출하고 수집하는 프로세스를 의미한다. 주로 정적인 웹 페이지에서 데이터를 수집하며, 데이터를 추출하고 가공하여 필요한 형태로 변환한다. 이 때 Beautiful Soup와 Requests와 같은 라이브러리를 주로 사용한다. 일반적으로는 소규모의 데이터 수집시에 활용되는 방법이다.
웹 스크래핑 라이브러리들은 아래에 보다 자세히 정리되어있다.

https://seung2344.tistory.com/85

https://seung2344.tistory.com/86

 

[Python] 웹 스크래핑 라이브러리 - Selenium

≣ 목차 이전 포스팅에서 알아본 BeautifulSoup는 주로 정적인 웹 페이지에서의 데이터 추출을 위해 사용되는 라이브러리이다. 하지만 우리가 평소 사용하는 웹 사이트는 동적인 웹 페이지로 구성

seung2344.tistory.com

 

 

import requests
from bs4 import BeautifulSoup

# 웹 페이지에 GET 요청 보내기
response = requests.get('https://example.com')

# 응답 내용을 BeautifulSoup 객체로 파싱
soup = BeautifulSoup(response.text, 'html.parser')

# 원하는 데이터 추출
title = soup.find('title').text
print(title)

 웹 크롤링  

웹 크롤링은 웹 페이지를 자동으로 탐색하여 링크를 따라가며 데이터를 수집하는 프로세스를 의미한다. 주로 동적인 웹페이지에서 데이터를 수집하며, 여러 페이지를 방문하여 데이터를 수집한다. 이 때 보통 크롤러 또는 스파이더라고 불리는 프로그램을 사용한다.
일반적으로 큰 규모의 데이터 수집이 필요한 경우에만 사용되며, 검색 엔진이나 인덱싱 서비스에서 주로 활용되는 웹 정보 수집 방법이다.

import requests
from bs4 import BeautifulSoup

# 웹 페이지에 GET 요청 보내기
response = requests.get('https://example.com')

# 응답 내용을 BeautifulSoup 객체로 파싱
soup = BeautifulSoup(response.text, 'html.parser')

# 원하는 링크 추출
links = soup.find_all('a')

# 링크를 따라가며 데이터 수집
for link in links:
    href = link.get('href')
    if href:
        subpage_response = requests.get(href)
        subpage_soup = BeautifulSoup(subpage_response.text, 'html.parser')
        # 필요한 데이터 추출 및 가공

robots.txt 

robots.txt는 웹 사이트의 루트 디렉토리에 위치한 텍스트 파일로, 검색 엔진 로봇들에게 웹 사이트의 특정 부분에 대한 접근을 허용하거나 제한하는 지침을 제공하는 파일이다. 해당 파일은 일반적으로 웹사이트의 웹마스터가 작성하며, 웹 크롤러와 같은 로봇들이 웹 사이트를 방문할 때 이 파일을 참고하여 특정 페이지 또는 디렉토리에 접근할 수 있는지 여부를 결정한다.

robots.txt 파일은 특정한 문법과 규칙을 따라 작성되며, 일반적으로는 아래와 같은 내용을 포함하여 작성된다. 

  • User-agent 지시자 :  특정 로봇 또는 크롤러에 대한 지시를 제공한다. 주로 * 기호가 자주 쓰이며 이는 모든 로봇을 뜻한다.
  • Disallow 지시자 :  특정 디렉토리 또는 페이지에 대한 엑세스를 거부하는 지시를 제공한다.
  • Allow 지시자 : 특정 디렉토리 또는 페이지에 대한 엑세스를 허용하는 지시를 제공하며, 일반적으로 Disallow 지시자가 있을 때 사용된다.

확인하고자 하는 웹사이트 주소 뒤에 /robots.txt를 붙이면 확인 가능하다.

res = requests.get("https://www.programmers.co.kr/robots.txt")
print(res.text)

"""

User-Agent: *

Disallow: /users
Disallow: /managers
Disallow: /cable
Disallow: /admin
Disallow: /start_trial
Disallow: /pr/*
Allow: /

"""
저작자표시 (새창열림)

'프로그래밍 > WEB' 카테고리의 다른 글

[웹 기초] HTTP 와 HTTPS  (0) 2024.04.02
[웹 기초] HTML 이해하기  (0) 2024.04.01
'프로그래밍/WEB' 카테고리의 다른 글
  • [웹 기초] HTTP 와 HTTPS
  • [웹 기초] HTML 이해하기
70_0ewd
70_0ewd
내가 보려고 적는 나의 공부 기록
  • 70_0ewd
    Seung's Learning Record
    70_0ewd
  • 전체
    오늘
    어제
    • 분류 전체보기 (92)
      • DE (2)
      • Dev Tool (29)
        • Flutter (5)
        • AWS (8)
        • Django (7)
        • Spring boot (9)
      • 프로그래밍 (30)
        • C++ (0)
        • JAVA (6)
        • SQL (13)
        • Python (8)
        • WEB (3)
      • 알고리즘 (26)
      • CS (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    파이썬
    SQL
    C++
    group by
    스택
    데브코스
    BFS
    heap
    Java
    플러터
    Queue
    깊이 우선 탐색
    백준
    AWS
    프로그래머스
    웹 스크래핑
    백트래킹
    너비 우선 탐색
    select
    DFS
    Flutter
    자바
    delete
    django
    JOIN
    큐
    stl
    공룡책
    Python
    DP
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
70_0ewd
[웹 기초] 웹 스크래핑 VS 웹 크롤링
상단으로

티스토리툴바