스크래핑과 크롤링은 어떤 차이가 있나요?
스크래핑과 크롤링은 웹 데이터를 수집하기 위한 두 가지 방법입니다. 이 두 방법은 종종 혼용되어 사용되지만, 그 기능과 목적에는 차이가 있습니다.
- 크롤링 (Crawling):
크롤링은 웹 사이트의 여러 페이지를 탐색하는 작업을 의미합니다.
일반적으로 웹 크롤러 또는 스파이더라는 프로그램이 자동화된 방식으로 웹사이트를 순회하며 페이지의 링크를 따라가거나 사이트 구조를 분석해 특정 데이터를 수집합니다.
검색 엔진이 웹 전체를 색인하는 과정에서 많이 사용됩니다.
- 스크래핑 (Scraping):
스크래핑은 특정 웹 페이지에서 원하는 데이터를 추출하는 작업입니다.
예를 들어, 특정 상품의 가격이나 뉴스 기사 등의 정보를 웹 페이지에서 수집할 때 사용합니다.
스크래핑은 크롤러가 수집한 페이지의 HTML이나 API 결과에서 원하는 데이터를 추출하는 데 초점을 맞춥니다.
요약하자면, 크롤링은 웹 페이지를 탐색하고 수집하는 과정이고, 스크래핑은 수집된 페이지에서 특정 정보를 추출하는 과정입니다.
Ruby언어로 크롤링 맛보기
Ruby에서 웹 크롤링과 스크래핑을 수행하기 위해 **nokogiri**와 **open-uri** 라이브러리를 사용하여 간단한 예제 코드 보여드리겠습니다.
먼저, 필요한 라이브러리를 설치해야 합니다. 터미널에서 다음 명령어를 실행하여 **nokogiri**를 설치하세요. **open-uri** 는 별도로 설치할 필요가 없습니다.
gem install nokogiri
다음은 특정 웹 페이지에서 제목을 크롤링하고 스크래핑하는 간단한 루비 코드입니다.
require 'nokogiri'
require 'open-uri'
# 웹 페이지 URL
url = 'http://example.com'
# 해당 URL의 HTML을 열고 Nokogiri 객체로 파싱합니다.
doc = Nokogiri::HTML(URI.open(url))
# 웹 페이지의 제목을 찾아 출력합니다.
title = doc.css('title').text
puts "Page Title: #{title}"
# 웹 페이지 내의 모든 링크를 크롤링하여 출력합니다.
doc.css('a').each do |link|
puts "Link: #{link['href']} Text: #{link.text}"
end
코드설명:
**require 'nokogiri'**와**require 'open-uri'**를 통해 필요한 라이브러리를 불러옵니다.**Nokogiri::HTML(URI.open(url))**을 사용하여 주어진 URL의 HTML 문서를 열고 Nokogiri 객체로 변환합니다.**doc.css('title').text**로**<title>**태그의 텍스트를 추출하여 페이지의 제목을 얻습니다.**doc.css('a')**를 사용하여 모든**<a>**태그 (링크)를 찾고, 각 링크의**href**속성과 텍스트를 출력합니다.
이 코드는 주어진 웹 페이지의 제목을 스크래핑하고, 페이지 내의 모든 링크를 크롤링하여 정보를 수집합니다.
Ruby언어로 스크래핑 맛보기
이번에는 예제 웹 페이지에서 특정 데이터를 추출(스크래핑)하는 예제를 보여드리겠습니다. 크롤링과 동일하게 **nokogiri**와 **open-uri**를 이용합니다.
아래 코드는 가상의 웹 페이지에서 최신 뉴스 제목을 추출하는 스크래핑 예제입니다.
ruby코드 복사
require 'nokogiri'
require 'open-uri'
# 가상 웹 페이지의 URL
url = 'https://example.com/news'
# HTML 콘텐츠를 가져와 Nokogiri로 파싱합니다.
doc = Nokogiri::HTML(URI.open(url))
# 최신 뉴스 헤드라인을 담고 있는 요소를 스크래핑합니다.
# 가정: 최신 뉴스는 클래스가 'headline'인 div에 포함되어 있다.
headlines = doc.css('div.headline')
# 각 헤드라인 요소에서 텍스트를 추출하여 출력합니다.
headlines.each do |headline|
puts headline.text.strip
end
코드설명:
**require 'nokogiri'**와**require 'open-uri'**로 필요한 라이브러리를 불러옵니다.**Nokogiri::HTML(URI.open(url))**로 주어진 URL의 HTML 문서를 열고 파싱합니다.**doc.css('div.headline')**로 클래스가**headline**인 모든**<div>**요소를 선택합니다.각 헤드라인 요소의 텍스트를 출력합니다.
이 코드는 웹 페이지의 HTML 구조를 기반으로 특정 CSS Selector 사용하여 원하는 데이터를 추출하는 예입니다. 실제로 스크래핑하려는 웹 페이지에 따라 선택자를 적절히 변경하면 다양한 정보를 추출할 수 있습니다.
이 글도 함께 읽어보세요:
데이터 수집, 이제 자동화하세요
코딩 없이 5분이면 시작 · 5,000개+ 웹사이트 크롤링 경험




