파충류 기본 || 1.1 URLLIB 도입

발발, 홈 오피스, 여가의 첫 번째 이십일.

파충류, 파충류 년 이상 쓴 적이없는 엔지니어로 천천히, 요즘은 소재를 압연과 파충류 리뷰 할의 방법이 연구 노트를 작성하여 쿠이 선생님의 "웹 크롤러 개발" 업데이트는, 우리는 학습의 교환을 환영합니다 ~~

이것은 파충류의 기초 라이브러리 URLLIB의 기초로 작성되었습니다. 그는 다음과 같은 네 가지 주요 범주가 포함되어 있습니다.

================================================== =========================

1.request : 그것은 기본적인 HTTP 가장 요청 모듈은 전송 요청을 시뮬레이션하는 데 사용할 수 있습니다. 브라우저에서 다음 같은 입력 네트워크 라오스를 입력 것처럼, 그냥 들어오는 URL 라이브러리 방법과 추가 매개 변수를 줄이를 달성하기위한 과정을 시뮬레이션 할 수 있습니다.

2.error : 요청이 오류가있는 경우 예외 모듈을 취급, 우리는 그들을 잡아 한 다음 다시 시도하거나 다른 작업 프로그램이 예기치 않게 종료되지 않도록 할 수 있습니다.

3.parse : 툴 모듈, 해상력, 해상도 URL 처리 방법들을 제공하고, 조합 등을들 수있다.

4.robotparser : 주로 사이트의 robots.txt 파일을 식별하고 실제보다 사이트를 적은 비용으로, 사이트는 오를 수없는, 오를 수를 결정하는 데 사용됩니다.

================================================== =========================

그럼 우리가 요청을 소개하기 시작했다

1.1.1 urlopen 송신 요구 ()

import urllib.request

response = urllib.request.urlopen('https://python.org')
print(response.read().decode('utf-8'))

크롤링, 그는 'https://python.org'웹 페이지 소스 코드 페이지 소스를 인쇄하는 데 사용, 너무 많은 쇼를 할 수 없다.

때 유형 (인쇄 (유형 (응답)) ) 우리는 응답을 인쇄 할 수 있습니다. 다음과 같은 결과를 얻었다
<클래스 'http.client.HTTPResponse'>

따라서,이 readinto 주로 읽기 (포함 개체 HTTPResposne 형), () 대해 getHeader (이름) 대해 getHeaders () fileno () 또는 인 및 MSG 버전, 상태 이유 debuglevel 닫힌 특성 등을들 수있다.

print(response.status)
print(response.getheaders()) # 相应头信息
print(response.getheader('Server'))

결과는 자신을 실행할 수 있습니다 참조 세 개 이상의 상태 요청, 서버 요청 헤더입니다.

매개 변수 설명

1.1.1.1 데이터 파라미터

데이터 매개 변수는 선택 사항입니다. 파라미터가 추가되어야하며, 즉 바이트 타입 바이트 스트림 인코딩 형식의 함유량이 경우,이 전환의 방법으로 필요한 바이트 경우 (). 이 매개 변수를 전달하는 경우 또한, 그것은 더 이상는 GET을 요청하는 방법,하지만 POST 방법입니다.

import urllib.parse
import urllib.request

data = bytes(urllib.parse.urlencode({'word':'hello'}),encoding = 'utf8')
response = urllib.request.urlopen('http://httpbin.org/post',data=data)
print(response.read())
B '{\ n "인수"{} \ n "데이터": ","\ n "파일"{} \ n "형태"{\ n "단어" "안녕하세요"\ n}, \ n "헤더": {\ n "수락 인코딩": "정체성", \ n "콘텐츠 길이": "10", \ N "의 Content-Type"은 "을 application / x-www-form은-urlencoded를" \ n은 "호스트": "httpbin.org"\ n "사용자 에이전트": "파이썬 URLLIB / 3.6"\ n} \ n "JSON"널 (null), \ n "기원": "112.49.156.179 , 112.49.156.179 ", \ n"URL ":"https://httpbin.org/post"\n}\n '

그 결과 위.

여기서 우리는 매개 변수 워드, 값 안녕을 전달합니다. 그것은 바이트 (바이트 스트림) 형식으로 트랜스 코딩 할 필요가있다. 전송 된 바이트 () 메소드를 이용한 바이트 스트림은, 상기 방법의 첫 번째 파라미터는 문자열 파라미터로 사전의 STR (문자열) 타입 모듈 욕구 urllib.parse의를 urlencode () 메서드 있어야이고;의 두 파라미터 지정 부호화 포맷은 본원 UTF8로 지정.

1.1.1.2 시간 초과 매개 변수

타임 아웃 파라미터는 요청이 설정된 시간을 초과하는 경우, 응답이 예외가 발생 없다는 것을 의미 초 슈퍼마켓 시간을 설정한다. 이 매개 변수가 지정되지 않은 경우, 전역 기본 시간을 사용합니다.

import urllib.request
response = urllib.request.urlopen('http://httpbin.org/get',timeout=1)
print(response.read())
B '{\ n "인수": {}, \ n "헤더": {\ n "수락 인코딩": "정체성", \ n "호스트": "httpbin.org"\ n "사용자 에이전트" "파이썬 URLLIB / 3.6"\ n} \ n "기원": "112.49.156.179, 112.49.156.179", \ n "URL": "https://httpbin.org/get"\n}\n '

여기서 우리는 시간 제한 리터의 초 설정합니다. L 초 프로그램 후, 서버는 여전히 다음 던져 URLError 예외를 응답하지 않습니다. 예외가 시간 제한 때문에 오류로, 사람들 URLLIB. 오류 모듈입니다. 따라서, 페이지가 응답하지 않는 긴 시간, 그것은 생략 크롤 경우 시간 제한을 설정하여 제어 할 수 있습니다.

 

import socket 
import urllib.request 
import urllib.error
try: 
    response = urllib.request.urlopen('http://httpbin.org/get ', timeout=0.1)
except urllib.error.URLError as e:
    if isinstance(e.reason,socket.timeout):
        print(' TIME OUT' )

 

여기서는 그것이 진짜 인해 타임 아웃 에러 인쇄물 TIME으로 얻어 지도록, 링크가 요청한 0.1 초의 시간 제한을 설정하고, 다음의 예외가 다음 (a 초과 예외를 의미한다) 타입 socket.timeout 결정된다 URLError 예외 캡처 테스트 OUT. 0.1 초는 서버 응답 시간 OUT 팁의 출력을 얻는 것이 거의 불가능하다. 때로는 매우 유용합니다,이 타임 아웃 절차를 달성하기 위해 시간 제한 매개 변수를 설정합니다.

1.1.3 다른 매개 변수

또한 시간 초과 매개 변수 및 데이터 매개 변수뿐만 아니라, 컨텍스트 매개 변수에서는 SSL을 설정, ssl.SSLContext 유형이어야합니다. HTTPS 링크를 요청할 때 또한, cafile에서와 capath에이 두 매개 변수는 CA 인증서와 경로를 지정,이 유용 할 것이다. cadefault 매개 변수는 이제 기본 값은 False입니다, 포기한다. 앞서 가장 기본적인 방법으로, 사용 () 메소드를 urlopen 설명한, 우리는 간단한 요청 및 웹 크롤러를 완료 할 수 있습니다. : 자세한 내용은 공식 문서에서 찾을 수 있습니다  https://docs.python.org/library/urllib.requwat.html.

사이트는 요청이 httpbin.org이고, 그것은 테스트 HTTP 요청을 제공 할 수 있습니다. 우리가 URL 요청이 시간은  , http://httpbin.org/post  ,이 링크는 POST 요청을 테스트 할 수 있습니다 그것을 출력 할 수 있습니다 우리가 통과 데이터 매개 변수를 포함하고 요청 된 정보의 일부.

================================================== ============

참조 : "python3 크롤러 개발 사례"- CUI 청 만

게시 14 개 원래 기사 · 원 찬양 12 ·은 10000 +를 볼

추천

출처blog.csdn.net/Watson_Ashin/article/details/104260999