웹 크롤링과 스크래핑의 차이 및 Ruby로 구현하는 기초 예제

웹 크롤링과 스크래핑의 차이 및 Ruby로 구현하는 기초 예제에 대한 설명과 Ruby를 사용한 웹 데이터 수집 방법 소개

9
웹 크롤링과 스크래핑의 차이 및 Ruby로 구현하는 기초 예제

스크래핑과 크롤링은 어떤 차이가 있나요?

스크래핑과 크롤링은 웹 데이터를 수집하기 위한 두 가지 방법입니다. 이 두 방법은 종종 혼용되어 사용되지만, 그 기능과 목적에는 차이가 있습니다.

  1. 크롤링 (Crawling):
  • 크롤링은 웹 사이트의 여러 페이지를 탐색하는 작업을 의미합니다.

  • 일반적으로 웹 크롤러 또는 스파이더라는 프로그램이 자동화된 방식으로 웹사이트를 순회하며 페이지의 링크를 따라가거나 사이트 구조를 분석해 특정 데이터를 수집합니다.

  • 검색 엔진이 웹 전체를 색인하는 과정에서 많이 사용됩니다.

  1. 스크래핑 (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

코드설명:

  1. **require 'nokogiri'****require 'open-uri'**를 통해 필요한 라이브러리를 불러옵니다.

  2. **Nokogiri::HTML(URI.open(url))**을 사용하여 주어진 URL의 HTML 문서를 열고 Nokogiri 객체로 변환합니다.

  3. **doc.css('title').text****<title>** 태그의 텍스트를 추출하여 페이지의 제목을 얻습니다.

  4. **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

코드설명:

  1. **require 'nokogiri'****require 'open-uri'**로 필요한 라이브러리를 불러옵니다.

  2. **Nokogiri::HTML(URI.open(url))**로 주어진 URL의 HTML 문서를 열고 파싱합니다.

  3. **doc.css('div.headline')**로 클래스가 **headline**인 모든 **<div>** 요소를 선택합니다.

  4. 각 헤드라인 요소의 텍스트를 출력합니다.

이 코드는 웹 페이지의 HTML 구조를 기반으로 특정 CSS Selector 사용하여 원하는 데이터를 추출하는 예입니다. 실제로 스크래핑하려는 웹 페이지에 따라 선택자를 적절히 변경하면 다양한 정보를 추출할 수 있습니다.

이 글도 함께 읽어보세요:

데이터 수집, 이제 자동화하세요

코딩 없이 5분이면 시작 · 5,000개+ 웹사이트 크롤링 경험

무료로 시작하기 →

댓글

댓글 작성

이메일은 공개되지 않으며, 답글 알림에만 사용됩니다.

이어서 읽어보세요

새 글 알림 받기

해시스크래퍼 기술 블로그의 새 글이 발행되면 이메일로 알려드립니다.

이메일은 새 글 알림에만 사용됩니다.