인터넷 상의 정보를 검색하여 사용자에게 제공하는 시스템 또는 소프트웨어를 의미한다. 사용자가 키워드나 문구를 입력하면, 검색 엔진은 이에 관련된 웹페이지나 다른 형태의 자료를 찾아서 사용자에게 결과로 보여준다.
크롤링(Crawling)
검색 엔진의 로봇(또는 크롤러, 스파이더)이 웹을 무작위로 탐색하면서 웹 페이지의 내용을 수집한다.
인덱싱(Indexing)
수집된 웹 페이지의 내용을 분석하여 중앙 데이터베이스에 인덱싱한다. 이 과정에서 웹 페이지의 내용, 태그, 링크 구조 등 다양한 요소를 파악한다.
쿼리 처리(Query Processing)
사용자가 검색어를 입력하면 검색 엔진은 인덱싱된 데이터베이스에서 관련 정보를 검색한다.
랭킹(Ranking)
검색 결과는 종종 관련성, 품질, 사용자의 개인화된 설정 등 다양한 요소를 기반으로 순위를 매겨서 보여진다.
✍️ "중앙 데이터베이스에 인덱싱한다."
: 웹 크롤러가 수집한 웹 페이지 정보를 검색 엔진의 데이터베이스에 저장하고, 그 내용을 분석하여 검색을 용이하게 하기 위한 인덱스를 생성한다.
중앙 데이터베이스(Central Database)
: 검색 엔진들은 웹에서 수집한 정보를 저장하기 위한 방대한 규모의 데이터베이스를 운영한다. 이 데이터베이스는 "중앙 데이터베이스"라고 부르기도 하며, 여기에는 전 세계의 웹 페이지 내용, 링크 정보, 메타 데이터 등이 저장된다.
인덱싱 (Indexing)
: 웹 크롤러가 웹 페이지의 내용을 수집한 후, 해당 내용을 검색 엔진의 중앙 데이터베이스에 저장하게 된다. 이때, 효율적인 검색을 위해 웹 페이지의 내용을 분석하고 정리하는 과정을 '인덱싱'이라고 한다.
예를 들면, 한 웹 페이지에 '사과'라는 단어가 여러 번 등장한다면, 그 웹 페이지는 '사과'와 관련된 내용이 있을 확률이 높다. 검색 엔진은 이런 정보를 바탕으로 '사과'라는 키워드와 해당 웹 페이지를 연결하는 인덱스를 생성한다.
사용자가 '사과'라는 검색어로 검색을 할 경우, 이 인덱스 정보를 바탕으로 관련된 웹 페이지를 빠르게 찾아 결과로 제공할 수 있다.😀
웹 크롤링은 인터넷 상의 웹 페이지를 방문하면서 그 내용을 가져오는 것을 말한다. 크롤러는 (거미가 그물을 펼쳐나가는 것처럼) 웹 페이지의 링크를 따라 계속해서 다른 웹 페이지로 이동하면서 정보를 수집한다.
크롤러(crawler) 또는 스파이더(spider)는 자동화된 소프트웨어로, 웹 페이지를 시스테마틱하게 탐색하면서 웹 페이지의 내용을 다운로드하는 데 사용된다고 한다.
그러므로 이것은 웹 검색 엔진에서 특히 중요한 역할을 한다!😀
1) 시작 URL: 크롤러는 하나 또는 여러 개의 시작 URL로부터 작동을 시작
2) 페이지 다운로드: 시작 URL에 연결된 웹 페이지의 내용을 다운로드
3) 링크 파싱: 다운로드된 웹 페이지의 내용에서 다른 웹 페이지로의 링크(하이퍼링크)를 파싱(추출)
4) 다음 페이지로: 파싱된 링크를 통해 다음 웹 페이지로 이동하고, 그 페이지의 내용도 다운로드
5) 반복: 이 과정을 계속 반복하면서 인터넷 상의 수많은 웹 페이지를 탐색하고 정보를 수집
예를 들어 구글, 네이버, 다음 등의 웹 검색엔진 크롤러는 이 방식으로 웹 상의 수많은 페이지 정보를 수집하여 자체 데이터베이스에 저장한다. 이후 사용자가 검색 쿼리를 입력하면, 이 데이터베이스를 바탕으로 관련된 검색 결과를 빠르게 제공할 수 있는 것이다. 🧐
웹 스크래핑은 특정 웹 페이지에서 원하는 정보만을 추출하는 것을 말한다. 예를 들면, 온라인 쇼핑몰에서 상품의 이름과 가격 정보만을 따로 뽑아내는 것과 같은 행위이다.
1) 스크래퍼 봇이라고 하는 정보를 빼내오는 데 사용되는 코드가 트겅 웹사이트에 HTTP GET 요청을 보낸다.
2) 웹사이트가 응답하면 스크래퍼는 HTML 문서를 분석해서 특정 패턴의 데이터를 찾는다.
3) 추출된 데이터는 스크래퍼 봇의 작성자가 설계한 특정 형식으로 변환된다.
웹 크롤링
웹 스크래핑
만약 단 하나의 페이지에서 특정 정보를 가져왔다고(스크래핑) 가정하더라도 robots.txt 지침을 따라야 할까? 🤔
👉 robots.txt 파일은 웹 크롤링과 스크래핑의 범위에 관계없이 웹사이트의 관리자가 웹 크롤러나 스파이더에게 해당 사이트의 어느 부분을 방문하거나 인덱싱하면 안 되는지를 알려주는 파일이다. 따라서 하나의 페이지만 스크래핑한다고 하더라도 해당 웹사이트의 robots.txt 파일에 따라야한다고 한다.
robots.txt
특정 User-agent(웹 크롤러의 식별자)에 대해 어떤 경로를 방문하면 안 되는지, 혹은 얼마나 자주 방문할 수 있는지 등의 지침이 명시되어 있을 수 있다.
Beautiful Soup나 Selenium 같은 도구로 스크래핑을 할 때, 이러한 지침을 자동으로 따르지는 않는다. 따라서 웹스크래퍼나 웹크롤러를 개발할 때는 robots.txt 파일을 직접 확인하고 해당 지침을 준수해야 한다고! 😤
User-agent
User-agent는 특정 웹 크롤러나 봇을 식별하는 문자열이다. 예를 들어 Googlebot은 Google의 웹 크롤러를 가리킨다.
Disallow
robots.txt 파일에서 Disallow 항목은 웹 크롤러나 봇이 접근해서는 안 되는 경로를 지정한다.
reference
crawling_vs_scraping
what-is-data-scraping
crawling 제약