첫째, 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 파일은 우리의 일반 시작 페이지와별로 차이가 열립니다