간단한 데이터 바이 포스트 바의 파이썬 크롤링 파충류

첫째, URLLIB에서 요청 URLLIB에서 임의의 패키지를 패키지 시간을 사용하고 구문 분석되는 최초의 도서관이있다

그럼 우리가 크롤링 BaiduSpider 정보라는 클래스를 정의

 

크롤링에 대한 URL 헤더 : URL을 속성 요청 헤더

클래스 BaiduSpider (객체) :
     데프  __init__ (자동) : 
        self.url = ' http://tieba.baidu.com/f?kw= {}의 pn = {} ' 
        self.headers = { ' 사용자 에이전트 ' : ' WIN7 : 모질라 / 5.0 (윈도우 NT 6.1; WOW64) AppleWebKit / 535.1 (KHTML, 도마뱀 붙이 등) 크롬 / 14.0.835.163 사파리 / 535.1 ' }

 

그럼 우리가 데이터를 청소 관련이없는 세 가지 방법을 정의

페이지를 가져 오기

1  # 1 위젯 페이지 
2      DEF get_page (자체, URL)
 . 3          #은 요구 객체를 정의 
4.          REQ = request.Request (URL = URL, 헤더 =의 self.headers)
 5.          #의 개시 요청 
6.          RES의 =의 request.urlopen (REQ)를
 7.          # 해당 개체를 얻었다 
. 8          HTML res.read = (). 디코딩 ( " UTF-. 8 ' , ' 무시 ' )
 . 9          복귀 HTML을

데이터를 저장

# 데이터 저장 
    DEF의 write_page (자기, 파일명, HTML) :
         #의 로컬에 저장 데이터 
        열기 (파일명, ' W ' , 인코딩 = " UTF-8. ' ) F AS : 
            f.write (HTML)

주요 기능

# 주요 기능의 
    DEF의 주 (자기) : 
        이름 = INPUT ( ' 붙여 이름을 입력 >>>> ' ) 
        시작 = INT (INPUT ( ' 홈 입력 ' ))  = INT (INPUT ( ' 종료를 입력 P ' ))
         에 대한 페이지 에서 . 범위 (시작, 종료 + 1 :)
             # http://tieba.baidu.com/f?kw PN = {} {}'스플 라이스 URL 주소 ' 
            #이 중국 문자 인코딩 URL을 인코딩 주소 코드 
            kW 급 = parse.quote (이름)
             #은 현재 페이지 가져 
            PN = (. 1 페이지) * 50 개 # URL에 대한 접합 주소
            
            = URL의 self.url.format (kW 급, PN)
             #을 얻을 적절한 
            HTML = self.get_page (URL) 
            파일 이름 = ' - {} 페이지 들이게에서 {} ' .format (이름, 페이지) 
            self.write_page (파일 이름, HTML ) 
            # 프롬프트 
            인쇄 ( ' 페이지에서 크롤링 성공 {} ' .format (페이지))
             #의 제어 크롤링 속도 
            time.sleep (random.randint (1,3))

 

마지막으로, 모든 코드 아래

#의 가져 오기 모듈 
에서 URLLIB의 가져 오기 요청의 구문 분석
 가져 오기 시간
 가져 오기 임의의 

클래스 : Baiduspider (Object)를
     DEF  __init__ (셀프) : 
        self.url = ' http://tieba.baidu.com/f?kw= 및 PN = {} {} ' 
        self.headers = { ' User-- 에이전트 ' : ' Win7에 : 모질라 / 5.0 (윈도우 NT 6.1하며 WOW64) AppleWebKit / 535.1 (KHTML, 도마뱀 등) 크롬 / 14.0.835.163 사파리 / 535.1 ' } 

    #의 페이지 가져 오기 
    DEF get_page ( 자기, URL) :
         #의 정의 요청 객체
        = request.Request REQ는 (URL = URL 헤더 = self.headers)
         #의 개시를 요청 
        RES는 = request.urlopen는 (REQ)
         #는 적절한 대상 얻었다 
        HTML res.read = ()를. (디코드 " UTF-한다. 8 " , " 무시 " )
         복귀 HTML의 


    # 1 의 데이터를 파싱 
    데프 : parse_page (자기)
         패스 

    #를 데이터 막아 
    데프 :) write_page (자기, 파일명, HTML을
         #의 저장 데이터를 로컬로 
        열기 (파일명에 ' W ' , 인코딩 = " UTF-8. ' AS) F :
            f.write (HTML) 

    # 주요 기능 
    DEF의 주 (자기) : 
        이름 = INPUT ( ' 입력 이름이 붙여 넣습니다 >>>> ' ) 
        시작 = INT (INPUT ( ' 홈 입력 ' ))  = INT ( 입력 ( ' 종료 페이지로 들어가 ' ))
         에 대한 페이지  범위 (시작, 종료 + 1. ) :
             # 접합 URL 주소 'http://tieba.baidu.com/f?kw PN = {} {}' 
            #의 인코딩 URL 주소 코드에 대한 중국의 문자 인코딩 
            kw = parse.quote (이름)
             #은 현재 페이지 얻을 
            PN = (페이지-1) * 50 #을
            접합의 URL 주소 
            URL이 = self.url.format (kW 급, PN)
             #은 적절한 얻을 
            HTML = self.get_page (URL) 
            파일 이름을 = ' {} - {} 페이지 들이게에서 ' .format (이름, 페이지) 
            자체. write_page (파일 이름, HTML) 
            # 프롬프트 
            인쇄 ( ' 페이지에서 성공적으로 {} 크롤링 ' .format (페이지))
             #의 제어 크롤링 속도를 
            time.sleep합니다 (random.randint (1,3 )) 

IF  __name__ == ' __main__ ' : 
    스파이더 = Baiduspider () 
    spider.main ()

아주, 아주 간단한 파충류 운영 결과 화면에서 완료 한의 모습입니다 :

 

 

 

 HTML 파일은 우리의 일반 시작 페이지와별로 차이가 열립니다

 

추천

출처www.cnblogs.com/gongdada/p/11620613.html