기본 사용 파충류 urllib2가 라이브러리

소위 웹 크롤링는, URL은 주소 지정된 네트워크 리소스를 로컬로 저장하기 위해 네트워크 스트림 출력에서 읽을이다. 파이썬에서, 웹을 크롤링하는 데 사용할 수있는 많은 도서관이 있습니다 urllib2库基本使用.

urllib2가이 Python2.7 운반하는 모듈입니다 (더 다운로드, 가져올 수 있습니다)

urllib2가 공식 문서 : https://docs.python.org/2/library/urllib2.html

urllib2가 출처 : https://hg.python.org/cpython/file/2.7/Lib/urllib2.py

urllib2 그것은 python3.x 변경되었습니다urllib.request

urlopen

# 코딩. 8 = UTF- 

# 수입 urllib2가 라이브러리 
가져 오기 urllib2가의 

# 객체 반환 서버 응답 파일과 같은 특정 요청 URL을 보낼 
응답 = urllib2.urlopen ( " http://www.cnblogs.com/loaderman/ " ) 

#을 이러한 읽기 () 메소드와 같은 동작 클래스 객체가 지원하는 파일 객체 파일, 파일 및 반환 문자열의 전체 내용을 읽어 
HTML = response.read () 

#의 인쇄 문자열 
인쇄 HTML을

 

쓰기 파이썬 코드는 결과를 인쇄한다

사실, "소스보기"를 선택하고 마우스 오른쪽 웹 페이지를보고, 당신은 찾아 정확히 같은 인쇄됩니다. 즉, 위의 코드 네 줄은 우리가 페이지를 아래로 올랐다 모든 코드를 돕고있다.

요청에 해당하는 기본 URL 파이썬 코드는 정말 매우 간단합니다.

의뢰

urlopen () 파라미터는 URL 주소이며;

당신은 HTTP 헤더를 추가하는 등보다 복잡한 작업을 수행해야하는 경우, 당신은 urlopen () 매개 변수로 요청 인스턴스를 생성해야하고 URL 주소는 요청 인스턴스로 필요한 매개 변수에 액세스 할 수 있습니다.

 

# 코딩. = UTF-8 

오기 urllib2가 된 

#의 URL 요청 () 메소드 파라미터 구조 복귀 요구 객체로서 
요청 = urllib2.Request ( " http://www.cnblogs.com/loaderman/ " ) 

#에 urlopen 같이 요청 개체 매개 변수 () 메소드를 서버에 송신하고, 응답 수신 
응답 = urllib2.urlopen (요구) 

HTML = response.read () 

인쇄 HTML을

 

운영 결과는 정확히 동일합니다 :

새로운 요청 인스턴스는 외부에 추가하여이 URL 매개 변수를해야합니다에 두 개의 추가 매개 변수가 제공 될 수있다 :

  1. 데이터 (빈 기본이) : 데이터를 동반, 제출 URL (예를 들어, 데이터를 게시하기) "POST"방법 "GET"모드에서 요청 HTTP를하는 동안.

  2. 헤더 (빈 기본) : 전송되는 키 HTTP 헤더를 포함하는 사전입니다.

이 두 가지 매개 변수를 우리는 아래에 설명합니다.

사용자 에이전트

그러나 그러한 직접 사용 urllib2를 웹 사이트에 요청을 보내고 조금 갑작스러운처럼, 사람들이 모든 문을 가지고, 당신은 분명하지 매우 정중에 파산 행인의 신원을 직접 비트 않습니다. 그리고 액세스에 대한 요청이 거부 할 수 있습니다, 일부 사이트는하지 (인간이 아닌 액세스) 액세스를 프로그램하고 같이 할 수있다.

우리는 사이트에 요청 사람에게 법적 지위를 사용하는 경우 우리가 정체성이 우리의 코드를 제공해야하므로하지만, 분명히 사람들은라고, 환영 User-Agent의 머리.

  • 브라우저는 우리가 실제 사용자처럼 크롤러를 원하는 경우, 인터넷 세계의 정체성을 허용되기로 인식하고, 우리가하는 첫 번째 단계는 인식 브라우저로 위장 할 필요가있다. 다른 브라우저는 서로 다른 사용자 에이전트 헤더가 시간에 요청을 보냅니다. urllib2가 기본 사용자 에이전트 헤더는 다음과 같습니다 Python-urllib/x.y(X와 Y는 파이썬 메이저와 마이너 버전 번호입니다 예를 들어, 파이썬 URLLIB / 2.7)

 

# . 코딩 8 = UTF- 

가져 오기 urllib2가 

URL = " http://www.cnblogs.com/loaderman/ " 

#의 9.0 사용자 에이전트의 정보 요소의 ua_header의에 포함 된 
ua_header = { " User-- 에이전트 " : " 모질라 / 5.0 ( 호환; MSIE 9.0; 윈도우 NT 6.1; 삼지창 / 5.0; " } 

#의   건설 요청 요청 헤더와 함께 URL이 요청은 사용자 에이전트 IE9.0 브라우저에 포함됩니다 
요청 = urllib2.Request (URL, 헤더 = ua_header) 

# 서버에 요청 전송 
응답 = urllib2.urlopen (요청) 

HTML = response.read () 

인쇄 HTML을

 

자세한 내용은 헤더 추가

는 특정 HTTP 요청 헤더를 추가하면 전체 HTTP 요청 메시지를 구성합니다.

호출하여 Request.add_header()추가 / 당신은 또한 호출 할 수 있습니다 헤더 특정 수정 Request.get_header()기존의 헤더를 볼 수 있습니다.

  • 특정 헤더 추가
# Urllib2_headers.py 

가져 오기 urllib2가 

URL = " http://www.cnblogs.com/loaderman/ " 

#의 IE들 - 9.0 - 사용자의 에이전트 
헤더 = { " User-- 에이전트 " : " 호환 모질라 / 5.0 (; MSIE 9.0; 윈도우 NT 6.1; 삼지창 / 5.0] " } 
관련 = urllib2.Request (URL 헤더 = 헤더) 

# ()를 호출 할 request.add_header 추가 / 특정 헤더 수정할 수 
request.add_header ( " 연결 " , " 연결 유지를 " ) 

# 당신은 또한) (Request.get_header를 호출하여 헤더 정보를 볼 수 있습니다 
#을request.get_header은 (header_name의는 "연결"=) 

응답 = urllib2.urlopen (REQ) 

인쇄 response.code의      #는 응답 상태 코드를 볼 수 있습니다 
HTML = (response.read)를 

인쇄 HTML을

 

  • 임의의 추가 / 수정 사용자 - 에이전트
# urllib2_add_headers.py 

수입 urllib2가의
 수입 임의 

URL = " 시간 TTP : //www.cnblogs.com/loaderman/ " 

ua_list = [
     " 모질라 / 5.0 (윈도우 NT 6.1) 애플 .... " ,
     " 모질라 / 5.0 ( X11, CROS는 i686 2268.111.0) ... " ,
     " 모질라 / 5.0 (매킨토시; U; PPC 맥 OS X ... " ,
     " 모질라 / 5.0 (매킨토시, 인텔 맥 OS ... " 
] 

USER_AGENT = 임의 .choice (ua_list) 

요청 = urllib2.Request (URL)

# 또한 호출하여 추가 할 수 있습니다 Request.add_header () / 특정 헤더 수정 
request.add_header ( " 사용자 에이전트 " , USER_AGENT) 

# 첫 글자를 대문자, 뒤 모두 소문자 
request.get_header ( " 사용자 에이전트를 " ) 

응답 = urllib2.urlopen (REQ) 

HTML = response.read ()
 인쇄 HTML을

 

추천

출처www.cnblogs.com/loaderman/p/11747578.html