크롤링 (Crawling)
크롤링은 웹 크롤러 또는 스파이더가 웹 페이지를 자동으로 탐색하고, 링크를 따라가며 여러 페이지를 방문하는 과정입니다. 크롤러는 보통 다음을 수행합니다:
- 경로 추적: 크롤러는 특정 웹 페이지에서 시작하여 그 페이지의 링크를 추적하고, 이를 통해 다른 페이지로 이동합니다. 이를 통해 사이트 전체 또는 사이트의 많은 부분을 탐색할 수 있습니다.
- 페이지 수집: 각 페이지를 방문할 때 페이지의 HTML 콘텐츠를 다운로드하고 저장합니다. 이 과정은 웹 검색 엔진이 웹 페이지를 인덱싱하는 방식과 유사합니다.
크롤링 예제 (링크 추적)
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin
# 시작 URL
start_url = 'https://example.com'
# 방문한 페이지를 추적하기 위한 집합
visited_urls = set()
def crawl(url):
if url in visited_urls:
return
print(f"Crawling: {url}")
visited_urls.add(url)
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# 모든 링크 추출
links = soup.find_all('a')
for link in links:
href = link.get('href')
if href:
# 절대 URL로 변환
full_url = urljoin(url, href)
crawl(full_url)
# 시작 URL에서 크롤링 시작
crawl(start_url)
스크래핑 (Scraping)
스크래핑은 특정 웹 페이지의 데이터를 추출하는 과정입니다. 이는 보통 크롤링을 통해 수집된 페이지나 특정 페이지의 HTML 구조에서 데이터를 추출하는 것을 말합니다. 스크래핑의 주요 활동은 다음과 같습니다:
- 데이터 추출: 특정 HTML 태그나 속성에서 데이터를 추출합니다. 예를 들어, div 태그 안의 텍스트나 a 태그의 링크를 추출하는 것입니다.
- API 호출 감시: 개발자 도구의 네트워크 탭을 사용하여 웹 애플리케이션이 사용하는 API 호출을 확인하고, 이를 통해 데이터를 추출하는 방법도 있습니다. 이를 통해 브라우저가 서버와 통신하는 방식을 모방하여 데이터를 얻을 수 있습니다.
스크래핑 예제 (데이터 추출)
import requests
from bs4 import BeautifulSoup
# 스크래핑할 URL
url = 'https://example.com/page'
# 페이지 데이터 요청 및 파싱
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# 특정 데이터 추출 (예: 모든 제목 추출)
titles = soup.find_all('h1')
for title in titles:
print(title.text)
차이점 요약
- 크롤링: 웹 페이지의 링크를 따라가며 여러 페이지를 자동으로 방문하고, 각 페이지의 HTML을 수집하는 작업. 주로 웹 페이지의 구조를 탐색하고 전체 사이트의 콘텐츠를 수집하는 데 사용됨.
- 스크래핑: 특정 웹 페이지에서 데이터를 추출하는 작업. 주로 HTML 태그나 API 호출에서 필요한 정보를 얻는 데 사용됨.
'-' 카테고리의 다른 글
Linux(리눅스) 기본 명령어들 (1) | 2024.05.28 |
---|---|
코드 스니펫(Snippet) 설명 (0) | 2024.05.27 |
[개인프로젝트] 웹 만들기 총 정리 (1) | 2024.01.24 |
JavaScript / React에서 sync / async(동기 비동기) 관련 상식 (1) | 2023.12.23 |
JWT에 대해서 (구성 요소, 인증 절차 등) (0) | 2023.12.12 |