-
생성자 크롤러 재정의 파일, 그 과정에서 인스턴스화하는 브라우저 객체를 사용 셀레늄 (브라우저가 한 번만 객체를 인스턴스화하기 때문에)
-
다시 쓰기 파충류 파일 내부에서 객체 (자기 스파이더)에있어서, 근접 브라우저를 닫았다. 이 방법은 파충류의 끝에서 호출
-
가로 탬퍼 응답 데이터에 응답하여 객체의 메소드가 페이지에 저장하므로, 다운로드 미들웨어 process_response 방법 다시 쓰기
-
구성 파일에 다운로드 한 미들웨어를 엽니 다
2. 코드 쇼
- 파충류 파일 :
WangyiSpider 클래스 (RedisSpider) : 이름 = 'wangyi' #allowed_domains = [ 'www.xxxx.com'] start_urls = [ 'https://news.163.com']이 는 def __init __ (자동) : 브라우저의 # 인스턴스 객체 (인스턴스 번) self.bro = webdriver.Chrome (executable_path = '/ Users (사용자) / 보보 / 데스크탑 / chromedriver') # 전체 크롤러의 끝에 있어야 가까이 브라우저 DEF 폐쇄 (자체, 스파이더) : 인쇄 ( ' 파충류 ') 끝 ) (self.bro.quit를
- 미들웨어 파일 :
오기 HtmlResponse scrapy.http에서 # 파라미터 도입 : #는 (스파이더 응답 다운 객체에 송신된다) 응답 객체를 인터셉트 #request : 요청 객체는 응답의 오브젝트에 대응 #response : 인터셉트 된 응답 오브젝트 #spider을 : 파일 대응 러 파충류의 예 DEF process_response (자기, 요청, 응답 , 거미) 오브젝트에 저장 탬퍼 응답 # 페이지 데이터 경우 http://news.163.com/domestic/','http:/ '[에서 request.url /news.163.com/world/','http://news.163.com/air/','http://war.163.com/ '] : spider.bro.get (URL = 요청. URL) JS = '는 window.scrollTo (0, document.body.scrollHeight)' spider.bro.execute_script (JS) time.sleep (2) # 소정 시간 데이터로드 브라우저 특정 버퍼 수득 # 페이지 데이터는 이 페이지 데이터에 해당하는 뉴스 데이터 중 동적 로딩을 포함 page_text = spider.bro.page_source의page_source # 탬퍼 응답 객체 창 HtmlResponse (URL = spider.bro.current_url 바디 = page_text 코딩 = "UTF-8", 요청 = 요청) 다른 : 반환 응답
- 프로필 :
DOWNLOADER_MIDDLEWARES = { 'wangyiPro.middlewares.WangyiproDownloaderMiddleware': 543, }