Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- AWS EC2
- android
- ListAdapter DiffUtil
- video caching
- map
- build with ai
- android custom view
- ktor client
- ktor api call
- doc2vec
- ChatGPT
- list map
- exoplayer cache
- llm
- android ktor
- DiffUtil.ItemCallback
- ExoPlayer
- Zsh
- 스피너
- ListAdapter
- 안드로이드
- kotlin list
- 시행착오
- 유튜브 요약
- android exoplayer
- 유튜브
- getChangePayload
- kotlin collection
- Python
- FastAPI
Archives
- Today
- Total
버튼 수집상
[책] HTTP 완벽 가이드 - 9장 웹 로봇 본문
웹 로봇
사람과의 상호작용 없이 연속된 웹 트랜잭션들을 자동으로 수행하는 소프트웨어
'크롤러', '스파이더', '웜', '봇'
- 인터넷 검색엔진은 웹을 돌아다니면서 그들이 만나는 모든 문서를 끌어오기 위해 크롤러를 사용한다.
- 크롤러가 리퀘스트를 빠르게 요청하면서 네트워크 대역폭을 다 차지하는 현상을 방지해야 한다.
URL 인덱싱
- 크롤러는 어떤 URL이 방문했던 곳인지 빠르게 결정하기 위해 검색 트리나 해시 테이블을 필요로 함.
- 다양한 형식의 URL을 표준형식으로 정규화할 수 있다.
첫번째 URL | 두번째 URL | 두 URL이 같은 경우 |
http://www.foo.com/bar.html | http://www.foo.com:80/bar.html | 기본포트가 80번 |
http://www.foo.com/~fred | http://www.foo.com/%7fred | %7이 ~과 같을 때 |
http://www.foo.com/x.html#early | http://www.foo.com/x.html#middle | 태그에 따라 페이지가 바뀌지 않을 때 |
http://www.foo.com/ | http://www.foo.com/index.html | 메인이 index.html일 때 |
도입할 수 있는 URL 정규화 규칙들: 태그를 뺀다, 기본포트 번호를 부여한다 등
휴리스틱
- 자율적으로 구동되는 로봇을 구현하기 위한 몇 가지 기법
- trade-off: 유효한 정보를 거를 수도 있음.
- 기법 1) URL 정규화
- 기법 2) 너비 우선 크롤링 (BFS) - 페이지 중 하나에서 URL 순환 구조에 빠져도 다른 페이지에 접근할 수 있다.
- 기법 3) 스로틀링 throttling
크롤러 Crawler vs 스크래퍼, 스크레이퍼 Scraper

Crawler | Scraper |
URL 인덱싱. 시드 URL부터 시작해서 웹페이지 구조를 파악하거나 연관 페이지의 링크를 모두 찾는다. |
미리 지정된 URL을 사용. JSON이나 DB처럼 구조화된 결과를 반환 |
목적은 '발견' | 목적은 '특정 정보 추출' |
검색엔진, 대규모 데이터 수집 등 | 가격정보 추출, 메타 데이터 추출 등 |
검색엔진은 빅데이터 기술에 대한 필요를 야기했다.
HTTP 리퀘스트
- 로봇임을 알리는 헤더를 넣는 것을 권장.
User-Agent | 서버에게 알리는 로봇의 이름 |
From | 로봇 관리자의 이메일 주소 |
Accept | 서버가 보내도 되는 미디어 타입 |
Referer | 현재의 요청 URL을 포함한 문서의 URL -> 사이트 관리자들에게 그들의 링크를 어떻게 발견했는지 알려줌 |
추가) 상태코드
100 - 101 | 정보 |
200-206 | 성공 |
300-305 | 리다이렉션 |
400-415 | 클라이언트 에러 |
500-505 | 서버 에러 |
모든 서버가 항상 적절한 에러 코드를 반환하지는 않는다는 걸 기억하기.
웹/로봇 표준
일반적으로 공개된 인터넷을 통해 리소스가 접근 가능하다면, 어디서든 접근할 수 있는 것이다.
인터넷에 링크가 존재하는 한 진정한 의미의 사적인 리소스는 거의 없다.
-> 로봇이 따라야할 표준 지침이 있다.
Robots Exclusion Standard a.k.a. robots.txt
- 서버의 문서 루트에 위치
- 서버루트/robots.txt의 GET 리퀘스트가 404를 반환하면 해당 사이트가 로봇 접근을 막지 않는 것으로 간주.
HTML 로봇 제어 META 태그
- 서버 루트가 아닌 개별 페이지의 HTML 문서에 추가
<META NAME="ROBOTS" CONTENT=directive-list>
- 메타 태그는 콘텐츠 색인을 만드는 검색엔진 로봇들에게 유용
그 밖의 로봇 가이드라인
- 대역폭: 로봇이 돌아가는데 얼마나 많은 네트워크 대역폭이 사용 가능한지 이해하고 실제 사용량을 측정하라.
- 분할 정복: 멀티 프로세서든 서버든 더 많은 하드웨어를 사용해야 할 경우가 있다.
- 체크포인트: 실패한 위치에서 진행상황의 스냅샷 저장하기. 버그를 맞닥뜨렸을 때마다 재시작하지 않도록 설계하라.
현대적인 검색엔진 아키텍처
풀 텍스트 색인 full-text indexes
- 웹의 모든 문서에 대한 일종의 카드 카탈로그
- 단어 하나를 입력 받으면 그 단어를 포함하고 있는 문서를 즉각 알려주는 DB
- 검색엔진 사용자 -> 핫봇이나 구글 같은 웹 검색 게이트웨이를 통해 풀 텍스트 색인에 query
- 풀 텍스트 색인은 웹의 특정 순간에 대한 스냅샷에 가까움
728x90
'일상 - 책' 카테고리의 다른 글
[책] 새빨간 거짓말, 통계 (0) | 2024.05.08 |
---|---|
[책] FastAPI를 사용한 파이썬 웹 개발 (0) | 2024.02.07 |
[책] 배드블러드 Bad Blood (0) | 2023.11.09 |
책 읽고 메모하는 법 업데이트 (0) | 2023.07.11 |
[책] 2023년 상반기 읽은 책 리스트 (0) | 2023.07.03 |