urllib는 「URL 처리·웹 요청」을 위한 표준 라이브러리 패키지입니다.
urllib.request·urllib.parse·urllib.error 등 여러 모듈로 나뉘어 있습니다.
requests 라이브러리가 더 친숙하지만, 외부 의존성이 없어야 할 때 urllib이 표준 선택입니다.
기본 GET 요청.
from urllib.request import urlopen.
with urlopen("https://example.com") as response: html = response.read().decode("utf-8").
한 줄로 웹 페이지의 HTML을 가져옵니다.
응답 헤더·상태 코드도 response 객체에서 접근 가능합니다.
URL 파싱.
from urllib.parse import urlparse.
p = urlparse("https://example.com/path?key=value").
p.scheme — "https".
p.netloc — "example.com".
p.path — "/path".
p.query — "key=value".
URL의 부분을 깔끔하게 분해해 줍니다.
쿼리 파라미터.
urlencode({"name": "홍길동", "age": 30}) — "name=%ED%99%8D%EA%B8%B8%EB%8F%99&age=30"(한글 자동 인코딩).
한글이나 특수문자가 들어간 URL을 만들 때 필수.
한계.
urllib은 표준 라이브러리이지만 API가 다소 투박해 「실무에서는 거의 모든 사람이 requests 라이브러리를 쓴다」가 일반적입니다.
requests는 「외부 의존성을 추가해도 좋다면 항상 더 나은 선택」이라는 평가를 받습니다.
다만 urllib은 외부 의존성 없이 동작해 「의존성을 절대 추가하면 안 되는」 환경(예: 작은 스크립트, 보안 환경)에서 유용합니다.
한 줄 요약
urllib는 URL 처리·웹 요청의 표준 라이브러리입니다.
urlopen·urlparse·urlencode가 핵심이며, API가 투박해 실무에서는 보통 requests를 더 선호합니다.
더 알아볼 것
- requests vs urllib 비교
- urllib3 — requests의 백엔드
- httpx — 비동기 + 동기 통합 라이브러리