Python Urllib.Request 및 urlopen()을 사용한 인터넷 액세스

⚡ 스마트 요약

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

  • 🔘 표준 라이브러리: urllib은 다음과 같은 기능을 제공합니다. Python 또한 요청, 오류, 구문 분석 및 로봇 파서 모듈을 묶습니다. URL 작업.
  • ☑️ 열기 URL: urllib.request.urlopen() 함수는 연결을 열고, getcode() 함수는 200과 같은 HTTP 상태 코드를 반환합니다.
  • 답변을 읽어보세요: read() 메서드는 원시 바이트를 반환하며, decode(“utf-8”) 메서드는 이를 읽을 수 있는 텍스트로 변환합니다.
  • 🧪 오류 처리: HTTPError를 포착하고 URLurllib.error에서 오류가 발생했으므로 요청 실패로 인해 프로그램이 종료되는 일은 없습니다.
  • 🛠️ 파일 다운로드 : urlretrieve() 함수는 모든 것을 저장합니다. URL 디스크에 바로 저장되므로 이미지, PDF 및 데이터 세트에 적합합니다.
  • 🤖 AI 지원 가능: urllib은 머신러닝 모델과 AI 파이프라인에 필요한 데이터셋과 API 데이터를 가져옵니다.

Python Urllib을 이용한 인터넷 접속

아래 섹션에서는 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".

엽니다 URL Urllib 사용

  • urllib 가져오기
  • 주요 기능 정의
  • webUrl 변수 선언
  • 그다음 urllib 라이브러리의 urlopen 함수를 호출합니다.
  • The URL 저희가 개장하는 곳은 Guru99번 튜토리얼 YouTube
  • 다음으로 결과 코드를 출력합니다.
  • 결과 코드는 우리가 생성한 webUrl 변수에 대해 getcode 함수를 호출하여 가져옵니다.
  • 우리는 그것을 문자열로 변환하여 "결과 코드"라는 문자열과 연결합니다.
  • 이는 HTTP 요청이 성공적으로 처리되었음을 나타내는 일반적인 HTTP 코드 "200"입니다.

HTML 파일을 얻는 방법 URL in Python

read() 함수를 사용하여 HTML 파일을 읽을 수도 있습니다. Python코드를 실행하면 HTML 파일이 콘솔에 나타납니다.

HTML 파일에서 URL in Python

  • 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 요청을 보내므로, 편의성과 의존성 라이브러리 목록 축소 중 어느 것을 선택할지가 관건입니다.

자주 묻는 질문

urlopen() 함수는 일반적으로 http.client.HTTPResponse 객체인 HTTP 응답 객체를 반환합니다. read() 함수를 호출하여 원시 바이트를 가져오고, getcode() 함수를 호출하여 상태 코드를 읽고, headers 또는 info() 함수를 호출하여 콘텐츠 유형 및 길이와 같은 메타데이터를 확인할 수 있습니다.

urllib2는 ~에 속했습니다. Python 2. 에 Python 3. 재구성되었습니다. 기능은 열기 위한 urllib.request로 분리되었습니다. URL예외 발생 시 s 및 urllib.error를 사용합니다. Code urllib2용으로 작성된 코드는 urllib.request를 가져오도록 업데이트해야 합니다.

`read()` 함수는 문자열이 아닌 바이트를 반환합니다. urlopen() 함수는 인코딩을 미리 알 수 없기 때문입니다. `decode("utf-8")`을 호출하면 해당 바이트가 읽을 수 있는 텍스트로 변환되어 HTML 또는 JSON 콘텐츠를 출력, 검색 또는 구문 분석할 수 있습니다.

열기 URL urlopen()을 사용하여 바이트를 읽고 디코딩한 다음 json 모듈을 사용하여 파싱합니다. json.loads(response.read().decode(“utf-8”)). 이렇게 하면 다음과 같은 결과가 반환됩니다. Python 웹 API를 호출할 때 흔히 사용되는 것처럼 사전이나 목록을 직접 사용할 수 있습니다.

포장 URL urllib.request.Request 객체에 헤더를 추가한 다음, 해당 헤더를 urlopen() 함수에 전달합니다. 예를 들어 `request.add_header(“User-Agent”, “Mozilla/5.0”)`와 같이 헤더를 추가하면 됩니다. 이렇게 하면 서버에서 기본 헤더를 차단하는 경우 사용자 지정 헤더를 활용할 수 있습니다. Python 사용자 에이전트.

네. urllib은 웹 API에서 데이터셋, CSV 파일, JSON 파일을 가져올 수 있으며, 가져온 데이터를 디코딩하여 pandas나 NumPy에 로드할 수 있습니다. 이는 머신러닝 파이프라인에 학습 데이터를 가져오는 가볍고 의존성 없는 방법입니다.

네. GitHub Copilot은 urlopen() 호출, Request 객체, try/except 오류 처리와 같은 일반적인 urllib 패턴을 자동 완성해 줍니다. 이를 통해 반복적인 코드 작성 속도를 높일 수 있지만, 여전히 검증하는 것이 좋습니다. URLAI 어시스턴트가 제안하는 헤더 및 예외 처리 방식입니다.

urllib.parse.urlencode()를 사용하여 매개변수를 인코딩하고, encode()를 사용하여 바이트로 변환한 다음, urlopen() 또는 Request 객체의 data 인수로 전달하세요. data를 제공하면 urllib은 자동으로 GET 요청 대신 POST 요청을 보냅니다.

이 게시물을 요약하면 다음과 같습니다.