1.가장 기본적인 애플리케이션
import urllib2 url = r'http://www.baidu.com' html = urllib2.urlopen(url).read() print html
클라이언트와 서버는 요청과 응답을 통해 통신합니다. 클라이언트는 먼저 서버에 요청을 보낸 다음 서버에서 반환된 응답을 받습니다.
urllib2는 사용자가 요청을 보내기 전에 요청 객체를 구성한 다음 urllib2.urlopen 메서드를 통해 요청을 보낼 수 있도록 하는 요청 클래스를 제공합니다.
import urllib2 url = r'http://www.baidu.com' req = urllib2.Request(url) html = urllib2.urlopen(req).read() print html
위 예에서는
을 먼저 사용하세요.req = urllib2.Request(url)
요청 객체를 인스턴스화한 다음
을 사용하세요.urllib2.urlopen(req)
이 페이지를 엽니다.
요청 개체를 인스턴스화할 때 URL을 설정해야 하며 여러 기본 매개변수가 있다는 것을 확인했습니다.
데이터와 헤더도 베이스에서 흔히 사용됩니다. 탐색을 위해 로그인이 필요한 일부 웹사이트에서는 이 두 매개변수가 필요한 경우가 많습니다
import urllib import urllib2 url = 'http://www.baidu.com/' values = {'name' : 'Michael Foord', 'location' : 'Northampton','language' : 'Python' } data = urllib.urlencode(values) req = urllib2.Request(url,data) response = urllib2.urlopen(req) the_page = response.read() print the_page
이 예는 Baidu에 일부 데이터를 보내는 것입니다. Baidu를 방문할 때 정보를 게시할 필요가 없기 때문에 정상적인 오류 페이지가 반환되지만 게시하면 오류가 발생합니다.
Baidu는 해당 웹페이지를 찾을 수 없으면 오류를 보고합니다.
물론 POST 데이터이므로 GET 메소드에서도 사용할 수 있습니다. 위 코드를 약간 수정하세요
Baidu는 http://www.baidu.com/s?wd=XXX를 통해 쿼리하므로 사전 {'wd':'xxx'}를 urlencode해야 합니다
#coding:utf-8 import urllib import urllib2 url = 'http://www.baidu.com/s' values = {'wd':'杨彦星'} data = urllib.urlencode(values) print data url2 = url+'?'+data response = urllib2.urlopen(url2) the_page = response.read() print the_page
다음은 Renren에 로그인한 후 홈페이지 콘텐츠를 표시하여 쿠키 사용을 자세히 설명하는 예입니다. 다음은 문서에 제시된 예를 원하는 기능을 달성하도록 변형해 보겠습니다. 🎜>
import cookielib, urllib2 cj = cookielib.CookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) r = opener.open("http://example.com/") #coding:utf-8 import urllib2,urllib import cookielib url = r'http://www.renren.com/ajaxLogin' #创建一个cj的cookie的容器 cj = cookielib.CookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) #将要POST出去的数据进行编码 data = urllib.urlencode({"email":email,"password":pass}) r = opener.open(url,data) print cjcj가 보이면 로그인 페이지에 접속했다는 의미입니다. http://www.renren.com/home에서 확인하실 수 있습니다.
위 코드에는 설명할 점이 2가지 있는데, 이해하는데 시간이 오래 걸렸습니다
r = opener.open(url,data)이 문장에서 utllib2와 urlopen을 사용하는 대신 opener 객체를 사용해야 하는 이유는 무엇입니까? 예제에서는 이렇게 작성했을 뿐만 아니라 변환을 통해 urllib2.urlopen도 사용할 수 있습니다. 사실 opener는 urllib2이기 때문입니다. .bulid_opener에 의해 생성되었지만 빌드된 후에는 이를 설치하여 사용하지 않았으며 원하는 경우 해당 속성과 메소드도 없었습니다. urllib2에는 오프너의 속성과 메소드도 있으므로 먼저 urllib2를 사용하여 오프너를 "설치"할 수 있습니다.
#coding:utf-8 import urllib2,urllib import cookielib url = r'http://www.renren.com/ajaxLogin' #创建一个cj的cookie的容器 cj = cookielib.CookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) urllib2.install_opener(opener) #将要POST出去的数据进行编码 data = urllib.urlencode({"email":email,"password":pass}) #r = opener.open(url,data)如果没有上面的urllib2.install_opener方法,就必须这样写了 r = urllib2.urlopen(url,data) html = urllib2.urlopen('http://www.renren.com/home').read() print html마찬가지로 urllib2에도 프록시 관련 핸들이 있습니다. 기본 아이디어는 이와 유사합니다.
2. 예외 처리
urlopen()이 응답을 처리할 수 없으면 URLError 예외가 발생합니다. HTTPError 예외는 URLError의 하위 클래스이며 HTTP 유형 URL에 액세스할 때만 발생합니다.
1. URLError 예외
일반적으로 URLError의 원인은 네트워크 연결이 없거나(대상 서버에 대한 경로 없음), 액세스한 대상 서버가 존재하지 않는 것입니다. 이 경우 예외 객체에는 이유 속성((오류 코드, 오류 이유)의 튜플)이 있습니다.
#! /usr/bin/env python #coding=utf-8 import urllib2 url="http://www.baidu.com/" try: response=urllib2.urlopen(url) except urllib2.URLError,e: print e.reason
2. HTTP 오류
서버에서 반환된 모든 HTTP 응답에는 상태 코드가 있습니다. 그 중 일부 상태 코드는 서버가 해당 요청을 완료할 수 없음을 나타냅니다. 기본 핸들러는 이러한 상태 코드 중 일부를 처리할 수 있습니다(반환된 응답이 리디렉션인 경우 urllib2는 자동으로 리디렉션된 페이지에서 정보를 얻습니다). urllib2 모듈이 처리할 수 없는 일부 상태 코드가 있으므로 urlopen 함수는 404/401이 일반적인 HTTPError 예외를 발생시킵니다.
HTTPError 예외 인스턴스에는 서버에서 반환된 오류 상태 코드를 나타내는 정수 유형의 코드 속성이 있습니다.
urllib2 모듈의 기본 핸들러는 리디렉션을 처리할 수 있으며(상태 코드는 300 범위에 있음) 100-299 범위의 상태 코드는 성공을 나타냅니다. 따라서 HTTPError 예외가 발생할 수 있는 상태 코드 범위는 400-599입니다.
오류가 발생하면 서버는 HTTP 오류 코드와 오류 페이지를 반환합니다. HTTPError 인스턴스를 반환 페이지로 사용할 수 있습니다. 즉, HTTPError 인스턴스에는 code 속성뿐만 아니라 read, geturl 및 info와 같은 메서드도 있다는 의미입니다.
#! /usr/bin/env python #coding=utf-8 import urllib2 url="http://cs.scu.edu.cn/~duanlei" try: response=urllib2.urlopen(url) except urllib2.HTTPError,e: print e.code print e.read()
3. 요약
코드에서 URLError와 HTTPError를 처리하려는 경우 두 가지 방법이 있는데 코드는 다음과 같습니다.
#! /usr/bin/env python #coding=utf-8 import urllib2 url="xxxxxx" #需要访问的URL try: response=urllib2.urlopen(url) except urllib2.HTTPError,e: #HTTPError必须排在URLError的前面 print "The server couldn't fulfill the request" print "Error code:",e.code print "Return content:",e.read() except urllib2.URLError,e: print "Failed to reach the server" print "The reason:",e.reason else: #something you should do pass #其他异常的处理 #! /usr/bin/env python #coding=utf-8 import urllib2 url="http://xxx" #需要访问的URL try: response=urllib2.urlopen(url) except urllib2.URLError,e: if hasattr(e,"reason"): print "Failed to reach the server" print "The reason:",e.reason elif hasattr(e,"code"): print "The server couldn't fulfill the request" print "Error code:",e.code print "Return content:",e.read() else: pass #其他异常的处理비교하면 두 번째 예외 처리 방법이 더 좋습니다.

Python은 데이터 과학, 웹 개발 및 자동화 작업에 적합한 반면 C는 시스템 프로그래밍, 게임 개발 및 임베디드 시스템에 적합합니다. Python은 단순성과 강력한 생태계로 유명하며 C는 고성능 및 기본 제어 기능으로 유명합니다.

2 시간 이내에 Python의 기본 프로그래밍 개념과 기술을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우기, 2. 마스터 제어 흐름 (조건부 명세서 및 루프), 3. 기능의 정의 및 사용을 이해하십시오. 4. 간단한 예제 및 코드 스 니펫을 통해 Python 프로그래밍을 신속하게 시작하십시오.

Python은 웹 개발, 데이터 과학, 기계 학습, 자동화 및 스크립팅 분야에서 널리 사용됩니다. 1) 웹 개발에서 Django 및 Flask 프레임 워크는 개발 프로세스를 단순화합니다. 2) 데이터 과학 및 기계 학습 분야에서 Numpy, Pandas, Scikit-Learn 및 Tensorflow 라이브러리는 강력한 지원을 제공합니다. 3) 자동화 및 스크립팅 측면에서 Python은 자동화 된 테스트 및 시스템 관리와 같은 작업에 적합합니다.

2 시간 이내에 파이썬의 기본 사항을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우십시오. 이를 통해 간단한 파이썬 프로그램 작성을 시작하는 데 도움이됩니다.

10 시간 이내에 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법은 무엇입니까? 컴퓨터 초보자에게 프로그래밍 지식을 가르치는 데 10 시간 밖에 걸리지 않는다면 무엇을 가르치기로 선택 하시겠습니까?

Fiddlerevery Where를 사용할 때 Man-in-the-Middle Reading에 Fiddlereverywhere를 사용할 때 감지되는 방법 ...

Python 3.6에 피클 파일로드 3.6 환경 보고서 오류 : modulenotfounderror : nomodulename ...

경치 좋은 스팟 댓글 분석에서 Jieba Word 세분화 문제를 해결하는 방법은 무엇입니까? 경치가 좋은 스팟 댓글 및 분석을 수행 할 때 종종 Jieba Word 세분화 도구를 사용하여 텍스트를 처리합니다 ...


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

Dreamweaver Mac版
시각적 웹 개발 도구

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전
