웹크롤링과 스크래핑의 차이

웹 크롤링과 스크래핑의 기본적인 차이점을 알아보고, Ruby 언어를 사용하여 간단한 크롤링과 스크래핑 예제를 실습해보세요. Nokogiri와 open-uri 라이브러리를 활용한 효과적인 데이터 수집 방법을 배워보십시오.

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

 
스크래핑과 크롤링은 웹 데이터를 수집하기 위한 두 가지 방법입니다. 이 두 방법은 종종 혼용되어 사용되지만, 그 기능과 목적에는 차이가 있습니다.
 
  1. 크롤링 (Crawling):
      • 크롤링은 웹 사이트의 여러 페이지를 탐색하는 작업을 의미합니다.
      • 일반적으로 웹 크롤러 또는 스파이더라는 프로그램이 자동화된 방식으로 웹사이트를 순회하며 페이지의 링크를 따라가거나 사이트 구조를 분석해 특정 데이터를 수집합니다.
      • 검색 엔진이 웹 전체를 색인하는 과정에서 많이 사용됩니다.
  1. 스크래핑 (Scraping):
      • 스크래핑은 특정 웹 페이지에서 원하는 데이터를 추출하는 작업입니다.
      • 예를 들어, 특정 상품의 가격이나 뉴스 기사 등의 정보를 웹 페이지에서 수집할 때 사용합니다.
      • 스크래핑은 크롤러가 수집한 페이지의 HTML이나 API 결과에서 원하는 데이터를 추출하는 데 초점을 맞춥니다.
요약하자면, 크롤링은 웹 페이지를 탐색하고 수집하는 과정이고, 스크래핑은 수집된 페이지에서 특정 정보를 추출하는 과정입니다.
 

Ruby언어로 크롤링 맛보기

Ruby에서 웹 크롤링과 스크래핑을 수행하기 위해 nokogiriopen-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'를 통해 필요한 라이브러리를 불러옵니다.
  1. Nokogiri::HTML(URI.open(url))을 사용하여 주어진 URL의 HTML 문서를 열고 Nokogiri 객체로 변환합니다.
  1. doc.css('title').text<title> 태그의 텍스트를 추출하여 페이지의 제목을 얻습니다.
  1. doc.css('a')를 사용하여 모든 <a> 태그 (링크)를 찾고, 각 링크의 href 속성과 텍스트를 출력합니다.
 
이 코드는 주어진 웹 페이지의 제목을 스크래핑하고, 페이지 내의 모든 링크를 크롤링하여 정보를 수집합니다.
 
 

Ruby언어로 스크래핑 맛보기

이번에는 예제 웹 페이지에서 특정 데이터를 추출(스크래핑)하는 예제를 보여드리겠습니다. 크롤링과 동일하게 nokogiriopen-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'로 필요한 라이브러리를 불러옵니다.
  1. Nokogiri::HTML(URI.open(url))로 주어진 URL의 HTML 문서를 열고 파싱합니다.
  1. doc.css('div.headline')로 클래스가 headline인 모든 <div> 요소를 선택합니다.
  1. 각 헤드라인 요소의 텍스트를 출력합니다.
 
이 코드는 웹 페이지의 HTML 구조를 기반으로 특정 CSS Selector 사용하여 원하는 데이터를 추출하는 예입니다. 실제로 스크래핑하려는 웹 페이지에 따라 선택자를 적절히 변경하면 다양한 정보를 추출할 수 있습니다.
 

이 글도 함께 읽어보세요: