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 메시지 라인 간의 구분자로 사용된다