scrapy process
프로세스는 다음과 같이 설명할 수 있습니다.
● 스케줄러는 요청을 보냅니다-->엔진-->미들웨어 다운로드--->Downloader
● 다운로더는 요청을 보냅니다. 응답 받기--->미들웨어 다운로드--->엔진--->크롤러 미들웨어--->Crawler
● 크롤러는 URL 주소를 추출하여 이를 요청 객체로 조합합니다--- -> ;크롤러 미들웨어--->엔진--->스케줄러
● 크롤러는 데이터 추출--->엔진--->파이프라인
●파이프라인은 데이터를 처리하고 저장합니다
추천 학습: Python 비디오 튜토리얼
참고:
그림의 녹색 선은 데이터 전송을 나타냅니다.
그림에서 역할을 결정하는 미들웨어의 위치에 주의하세요
엔진의 위치에 주의하세요. 이전에는 모듈이 서로 독립적이었습니다.
scrapy에서 각 모듈의 구체적인 역할
1. scrapy 프로젝트 구현 프로세스
scrapy 프로젝트 만들기: scrapy start프로젝트 프로젝트 이름
생성 크롤러: scrapy genspider 크롤러 이름 허용 크롤링 범위
데이터 추출: 스파이더 개선, xpath 및 기타 방법 사용
데이터 저장: 파이프라인에 데이터 저장
2. scrapy 프로젝트 만들기
명령: scrapy startproject +< ;프로젝트 이름>
예 :scrapy startproject myspider
생성된 디렉터리 및 파일 결과는 다음과 같습니다.
settings.py의 주요 필드 및 의미
● USER_AGENT Set ua
● ROBOTSTXT_OBEY 준수 여부 robots 프로토콜, 기본값은
● CONCURRENT_REQUEST S 동시 요청 수를 설정합니다. 기본값은 16입니다.
● DOWNLOAD_DELAY 다운로드 지연, 기본적으로 지연 없음
● COOKIES_ENABLED 쿠키 활성화 여부, 즉 각각 요청은 이전 쿠키를 가져오며 기본값은 활성화됩니다.
● DEFAULT_REQUEST_HEADERS 기본 요청 헤더 설정
● SPIDER_MIDDLEWARES 크롤러 미들웨어, 설정 프로세스는 파이프라인과 동일합니다.
● DOWNLOADER_MIDDLEWARES 미들웨어 다운로드
크롤러 생성
명령: scrapy genspider + +
생성된 디렉터리 및 파일 결과는 다음과 같습니다.
스파이더 개선
방법을 통해 스파이더 개선 데이터 추출 및 기타 작업:
참고:
● response.xpath 메서드 반환 결과는 선택기 개체를 포함하는 목록과 유사한 유형이지만 작업은 목록과 동일하지만 몇 가지가 있습니다. 추가 메서드
● extract()는 문자열이 포함된 목록을 반환합니다.
● extract_first()는 목록을 반환합니다. 첫 번째 문자열, 목록은 비어 있고 아무것도 반환되지 않습니다.
● 스파이더의 구문 분석 메서드에는
● URL 주소가 있어야 합니다. 크롤링하려면 allowed_domains에 속해야 하지만 start_urls의 URL 주소에는 이러한 제한이 없습니다
● 크롤러 시작 시작 위치에 주의하면 프로젝트 경로 아래에서 시작됩니다
데이터가 파이프라인으로 전송됩니다
Yield를 사용하는 이유는 무엇인가요?
● 전체 기능을 발전기로 전환하면 어떤 이점이 있나요?
● 이 함수의 반환 값을 순회할 때 데이터를 하나씩 메모리로 읽어오면 순간적인 메모리 사용량이 너무 높아지지 않습니다.
● python3의 범위는 python2의 xrange와 동일합니다
참고:
yield can 전달된 개체는 BaseItem, Request, dict, None
6일 수 있습니다. 파이프라인 개선
파이프라인은 설정에서 여러 파이프라인을 열 수 있습니다. 왜 필요한가요? 여러 파이프라인을 열려면?
● 서로 다른 파이프라인은 서로 다른 크롤러의 데이터를 처리할 수 있습니다.
● 서로 다른 파이프라인은 데이터 정리용, 데이터 저장용 등 서로 다른 데이터 처리 작업을 수행할 수 있습니다.
파이프라인 사용 시 주의 사항
● 사용 필요
전에 설정에서 켜두세요● 파이프라인 설정의 키는 위치(즉, 프로젝트 내 파이프라인의 위치를 사용자 정의할 수 있음)를 나타내고 값은 엔진과의 거리를 나타냅니다. 데이터가 가까울수록 속도가 빨라집니다.
● 파이프라인이 여러 개 있는 경우 process_item 메서드는 항목을 반환해야 합니다. 그렇지 않으면 후자 파이프라인에서 얻은 데이터는 None 값이 됩니다.
● 파이프라인의 process_item 메서드가 있어야 합니다. 그렇지 않으면 항목을 가져올 수 없습니다. 승인 및 처리됨
● process_item 메소드는 항목과 스파이더를 허용합니다. 여기서 spider는 현재 전달된 항목을 나타냅니다. spider
이 문서는 python tutorial 열에서 가져온 것입니다. 학습을 환영합니다!
위 내용은 Python 크롤러 스크래피 소개 및 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!