Python Urllib.Request 및 urlopen()을 사용한 인터넷 액세스
⚡ 스마트 요약
urllib은 표준입니다. Python 인터넷 데이터에 접근하여 프로그램을 실행할 수 있도록 하는 모듈입니다. URLurllib.request.urlopen() 함수는 웹 주소에 연결하여 서버 응답을 직접 읽어 HTML, JSON 또는 바이너리 콘텐츠를 가져옵니다. Python.

아래 섹션에서는 urllib이 무엇인지, 그리고 urllib을 여는 방법을 설명합니다. URL HTML을 읽는 방법, 오류를 처리하는 방법, 파일을 다운로드하는 방법, 그리고 urllib과 requests 라이브러리 중에서 선택하는 방법을 알아봅니다.
Urlib 란 무엇입니까?
urllib는 Python 열기에 사용할 수 있는 모듈 URLs. 이는 함수와 클래스를 정의하여 도움을 줍니다. URL 행위.
와 Python또한 XML, HTML, JSON과 같은 인터넷상의 데이터를 가져와 직접 작업할 수도 있습니다. 아래 섹션에서는 웹에서 데이터를 가져오는 방법을 살펴보겠습니다. 예를 들어, 여기서는 다음을 사용합니다. Guru99 비디오 URL다음을 사용하여 액세스하세요. Python그리고 이 HTML 파일을 출력합니다. URL.
urllib 패키지는 여러 모듈을 그룹화합니다. urllib.request는 웹페이지 열기용 모듈입니다. URLs, urllib.error는 요청에서 발생할 수 있는 예외를 나타내고, urllib.parse는 빌드 및 구문 분석을 나타냅니다. URLrobots.txt 파일을 읽기 위한 s와 urllib.robotparser가 있습니다.
여는 방법 URL Urllib 사용
인터넷 데이터에 연결하는 코드를 실행하기 전에 먼저 필요한 라이브러리를 임포트해야 합니다. URL 라이브러리 모듈, 또는 "urllib".
- urllib 가져오기
- 주요 기능 정의
- webUrl 변수 선언
- 그다음 urllib 라이브러리의 urlopen 함수를 호출합니다.
- The URL 저희가 개장하는 곳은 Guru99번 튜토리얼 YouTube
- 다음으로 결과 코드를 출력합니다.
- 결과 코드는 우리가 생성한 webUrl 변수에 대해 getcode 함수를 호출하여 가져옵니다.
- 우리는 그것을 문자열로 변환하여 "결과 코드"라는 문자열과 연결합니다.
- 이는 HTTP 요청이 성공적으로 처리되었음을 나타내는 일반적인 HTTP 코드 "200"입니다.
HTML 파일을 얻는 방법 URL in Python
read() 함수를 사용하여 HTML 파일을 읽을 수도 있습니다. Python코드를 실행하면 HTML 파일이 콘솔에 나타납니다.
- webUrl 변수에 read() 함수를 호출합니다.
- read() 메서드를 사용하면 데이터 파일의 내용을 읽을 수 있습니다.
- 전체 내용을 읽어보세요 URL data라는 변수에 저장
- 코드를 실행하면 데이터가 HTML 형식으로 출력됩니다.
전체 코드는 다음과 같습니다.
Python 2 예
# # read the data from the URL and print it # import urllib2 def main(): # open a connection to a URL using urllib2 webUrl = urllib2.urlopen("https://www.youtube.com/user/guru99com") #get the result code and print it print "result code: " + str(webUrl.getcode()) # read the data from the URL and print it data = webUrl.read() print data if __name__ == "__main__": main()
Python 3 예
# # read the data from the URL and print it # import urllib.request # open a connection to a URL using urllib webUrl = urllib.request.urlopen('https://www.youtube.com/user/guru99com') #get the result code and print it print ("result code: " + str(webUrl.getcode())) # read the data from the URL and print it data = webUrl.read() print (data)
urllib 오류 처리 방법: URL오류 및 HTTPError
요청이 항상 성공하는 것은 아닙니다. 오류가 발생하면 urllib은 데이터를 반환하는 대신 예외를 발생시키므로 이러한 오류를 처리하는 것이 중요합니다. urllib.error 모듈은 두 가지 주요 예외 클래스를 정의합니다.
- HTTP 오류 이 예외는 서버가 404 Not Found 또는 500 Internal Server Error와 같은 오류 상태 코드를 반환할 때 발생합니다. 이 예외에는 상태 코드와 응답 본문이 포함됩니다.
- URL오류 서버에 전혀 연결할 수 없는 경우(예: 잘못된 도메인 이름 또는 인터넷 연결 없음)에 발생합니다. 이 예외에는 실패 원인을 설명하는 reason 속성이 포함됩니다.
HTTPError는 의 하위 클래스이기 때문입니다. URL오류 발생 시, 각 오류 유형을 별도로 처리하기 위해 항상 HTTPError를 먼저 포착해야 합니다.
from urllib.request import urlopen from urllib.error import HTTPError, URLError try: response = urlopen("https://www.guru99.com/no-such-page.html") data = response.read() except HTTPError as error: print("HTTP error:", error.code) except URLError as error: print("URL error:", error.reason)
이러한 예외를 처리하면 프로그램이 충돌하는 것을 방지하고 문제를 기록하거나, 요청을 다시 시도하거나, 캐시된 데이터를 사용할 수 있습니다.
파일을 다운로드하는 방법 URL urllib을 사용하기
독서 URL 작은 페이지의 경우 메모리에 저장하는 방식이 효과적이지만, 이미지, PDF 문서 또는 데이터 세트의 경우 응답을 디스크에 직접 저장하는 것이 더 쉽습니다. urllib.request 모듈은 이를 위한 두 가지 간단한 방법을 제공합니다.
urlretrieve() 함수는 파일을 다운로드합니다. URL 한 줄로 로컬 파일에 직접 저장:
from urllib.request import urlretrieve urlretrieve("https://www.python.org/static/img/python-logo.png", "logo.png")
더 자세한 제어를 위해 열어보세요. URL 바이트를 직접 작성하세요. urlopen() 함수는 텍스트가 아닌 바이트를 반환하므로 로컬 파일을 바이너리 모드로 여세요.
from urllib.request import urlopen with urlopen("https://example.com/data.zip") as response: with open("data.zip", "wb") as file: file.write(response.read())
매우 큰 파일의 경우 전체 파일이 한 번에 메모리에 유지되지 않도록 response.read(8192)를 사용하여 루프에서 읽고 쓰십시오.
urllib과 requests 라이브러리 비교 Python
urllib은 다음의 일부입니다. Python 표준 라이브러리이므로 설치 없이 어디서든 사용할 수 있습니다. 타사 requests 라이브러리는 내장되어 있지 않지만, 많은 개발자들이 구문이 더 간결하고 가독성이 좋기 때문에 일상적인 HTTP 작업에 선호합니다.
주요 차이점은 다음과 같습니다.
- 설치: urllib은 다음과 같은 기능을 제공합니다. Python반면 requests 라이브러리는 pip를 사용하여 설치해야 합니다.
- 디코딩: urllib은 사용자가 직접 디코딩해야 하는 원시 바이트를 반환하는 반면, requests는 텍스트와 JSON을 자동으로 디코딩합니다.
- 편리 성 : requests 라이브러리는 세션, 쿠키 및 사용자 지정 헤더를 더 적은 코드로 처리합니다.
- 종속성 : urllib은 아무것도 추가하지 않지만, requests는 내부적으로 urllib3에 의존합니다.
의존성 라이브러리가 전혀 필요 없거나 간단한 일회성 요청만 필요한 경우에는 urllib을 선택하세요. 인증, 세션 관리 또는 빈번한 API 호출이 필요한 대규모 프로젝트에는 requests 라이브러리를 사용하는 것이 좋습니다. 두 라이브러리 모두 기본적으로 동일한 HTTP 요청을 보내므로, 편의성과 의존성 라이브러리 목록 축소 중 어느 것을 선택할지가 관건입니다.


