TIL
(23.04.18) 파이썬크롤링2 - HTTP 통신, requests
이영애님
2023. 4. 18. 17:21
TIL은 그날 하루 본인이 어떤 공부를 하였는지 파악하기 위함입니다.
상세하게 기록하여 이후 본인이 어떤 공부를 어떻게 하였는지 파악할 수 있도록 하는 것이 중요합니다.
학습 주제
1. 데이터 수집을 위한 웹 통신
- 웹 스크래핑과 웹 크롤링의 차이를 학습한다
- 로봇 배제 프로토콜을 해석할 수 있다
2. request 라이브러리
- HTTP client 라이브러리와 특징을 학습한다
주요 메모 사항
LAN(Local Area Network)
- 근거리 지역 네트워크
Internet
- 범지구적으로 연결된 네트워크
WWW(World Wide Web, Web)
- 인터넷에서 정보를 교환기 위한 시스템
HTTP(Hypertext Transfer Protocol)
- 웹 상에서 정보를 주고받기 위한 약속
웹 스크래핑 vs 웹 크롤링
- 웹 페이지에 데이터를 추출하는 것
- 크롤러 혹은 반복적으로 URL을 탐색해 웹 페이지 정보를 인덱싱
로봇 배제 프로토콜(REP)
- 로봇들의 무단 접근을 방지하기 위해 만들어진 로봇 배제 표준 권고안
- /robots.txt 를 통해 사이트별 REP 조회가 가능하다
- User-agent, Disallow , Allow
User-agent: * # 모든 유저에 대해
Disallow: / # 모두 접근 불가
requests
- HTTP Client 라이브러리, http 요청을 보내고 응답을 처리할 수 있다
- urllib3 기반으로 만들어졌다
- HTTP/1.0 만 지원한다
- 동기적인 요청만 처리 가능하다
requests 와 유사한 라이브러리
urllib3 | - 파이썬에 내장된 HTTP client 라이브러리 - HTTP/1.0 , HTTP/2.0을 지원한다 - 복잡하고 덜 직관적인 API를 제공한다 |
aiohttp | - asyncio 을 사용해 비동기적으로 HTTP 요청을 처리하는 라이브러리 - (asyncio : 비동기식 I/O 및 이벤트 루프를 지원하는 라이브러리) |
selenium | 브라우저를 제어하여 웹 페이지를 테스트/스크래핑 할 수 있는 라이브러리 |
reuqests 와 같이 쓰면 좋은 라이브러리
- beautifulsoup4 - 마크업언어(HTML,XML) 파싱 lib
Scrapy
- 파이썬 기반 웹 스크래핑 프레임워크
- 크롤링 , 데이터 추출 , 데이터 처리/저장 및 파이프라인으로 구성되어 있다
- 비동기 네트워킹, 내장 데이터베이스를 지원한다
- 분산 크롤링, 로그인, 캐시, 에러 처리, 유닛 테스트 등의 기능을 수행할 수 있다
공부하며 어려웠던 내용
CRLF(Carriage Return Line Feed)
- 줄 바꿈 문자
- Carriage Return(\r) : 이전 라인의 끝
- Line Feed(\n) : 새로운 라인
- HTTP 메시지 라인 간의 구분자로 사용된다