파이썬 urllib 예제

또한 프록시 설정이 검색되는 경우(예: http_proxy와 같은 *_proxy 환경 변수가 설정된 경우) ProxyHandler가 기본적으로 설치되고 프록시를 통해 요청이 처리되도록 합니다. urllib.request는 많은 “URL 구성표”(URL에서 “:”앞에 있는 문자열로 식별됨)에 대한 URL 가져오기를 지원합니다( 예: “ftp”는 관련 네트워크 프로토콜(예: FTP, HTTP)를 사용하여 “ftp://python.org/”의 URL 체계입니다. 이 자습서에서는 가장 일반적인 경우 인 HTTP에 중점을 둡니다. 다음 예제에서는 가장 일반적인 사용 시나리오를 보여 줍니다: 일부 운영 체제는 URL보다 로컬 파일에서 경로의 구성 요소를 구분하기 위해 서로 다른 값을 사용합니다. 코드를 이식 가능으로 만들려면 pathname2url() 및 url2pathname() 함수를 사용하여 앞뒤로 변환해야 합니다. Mac에서 작업하고 있기 때문에 함수의 Windows 버전을 명시적으로 가져와야합니다. urllib에서 내보낸 함수 버전을 사용하면 플랫폼에 대한 올바른 기본값을 사용할 수 있으므로 이 작업을 수행할 필요가 없습니다. 파이썬 3의 urllib 모듈을 사용하면 프로그램을 통해 웹 사이트에 액세스 할 수 있습니다. 이것은 인터넷이 당신을 위해 열립니다으로 프로그램에 대한 많은 문을 엽니 다. 파이썬 3의 urllib은 파이썬 2의 urllib2와 약간 다르지만 대부분 동일합니다. urllib을 통해 웹 사이트에 액세스하고, 데이터를 다운로드하고, 데이터를 구문 분석하고, 헤더를 수정하고, 수행해야 할 GET 및 POST 요청을 수행할 수 있습니다.

urlretrieve()는 사용 가능한 데이터 양이 예상 금액(콘텐츠 길이 헤더에 의해 보고된 크기)보다 작다는 것을 감지하면 ContentTooShortError를 발생시키게 됩니다. 예를 들어 다운로드가 중단될 때 이러한 일이 발생할 수 있습니다. 밝혀, 구글은 405를 반환합니다, 방법은 허용되지 않습니다. 구글은 우리의 요청에 만족하지 않습니다! 다른 웹 사이트에서 위의 변수를 수정해 보십시오. 검색 바가있는 웹 사이트를 찾고 파이썬을 통해 사용할 수 있는지 확인하십시오. urllib의 많은 사용은 간단 할 것이다 (대신 `http :`URL 대신 우리는 `ftp:`, `file:`등으로 시작하는 URL을 사용할 수 있습니다 참고). 그러나 HTTP에 집중하는 더 복잡한 사례를 설명하는 것이 이 자습서의 목적입니다. 기본적으로 URLopener 클래스는 urllib/VVV의 사용자 에이전트 헤더를 보냅니다. 응용 프로그램은 URLopener 또는 FancyURLopener를 하위 클래스로 분류하고 클래스 특성 버전을 하위 클래스 정의의 적절한 문자열 값으로 설정하여 고유한 사용자 에이전트 헤더를 정의할 수 있습니다. HTTP POST 요청 방법의 경우 데이터는 표준 응용 프로그램/x-www-form-urlencoded 형식의 버퍼여야 합니다. urllib.parse.urlencode() 함수는 2-tuples의 매핑 또는 시퀀스를 취하고 이 형식으로 ASCII 문자열을 반환합니다.

데이터 매개 변수로 사용되기 전에 바이트로 인코딩해야 합니다. 오류가 발생하면 서버는 HTTP 오류 코드와 오류 페이지를 반환하여 응답합니다. HTTPError 인스턴스를 반환된 페이지의 응답으로 사용할 수 있습니다. 즉, 코드 특성뿐만 아니라 url.response 모듈에서 반환되는 메서드를 읽고, geturl 및 정보, 메서드를 가지고 있습니다: 처리기는 BaseHandler의 인스턴스여야 합니다. 다음 메서드를 검색 하 고 가능한 체인에 추가 됩니다 (HTTP 오류는 특별 한 경우). 다음에서는 http_response()가 HTTP 프로토콜 응답 처리기일 경우와 같은 실제 프로토콜로 프로토콜을 대체해야 합니다. 또한 http_error_404(http_error_404)가 HTTP 404 오류를 처리하는 것과 같은 형식은 실제 HTTP 코드로 바꿔야 합니다. 구글은 우리가 우리가 누구인지 구글을 말하고 있기 때문에이 일을하고있다, urllib 파이썬 봇! 헤더의 사용자 에이전트를 수정하여 변경해 보겠습니다.