최근 Python을 배우고 있고, Python을 사용하여 데이터를 크롤링하는 방법도 배우고 있습니다. 그래서 매우 인기 있는 Python 크롤링 프레임워크인 Scrapy를 발견했습니다. 이 도구를 더 잘 활용하기 위해 Scrapy의 아키텍처를 배워보겠습니다.
1. 개요
다음 그림은 Scrapy의 주요 구성 요소와 시스템의 데이터 처리 프로세스를 포함하는 일반적인 아키텍처를 보여줍니다(녹색 화살표는 표시를 나타냅니다). 각 구성 요소의 역할과 데이터 처리 과정을 하나씩 설명하겠습니다.
2. 구성요소
1.스크래피 엔진
Scrapy 엔진은 전체 시스템의 데이터 처리 프로세스를 제어하고 트랜잭션 처리를 시작하는 데 사용됩니다. 자세한 내용은 아래의 데이터 처리 과정을 참조하세요.2. 스케줄러(Scheduling)
스케줄러는 Scrapy 엔진의 요청을 받아 대기열에 정렬하고 Scrapy 엔진 이후에 처리합니다. 요청을 발행합니다. 요청을 반환합니다.3. 다운로더
다운로더의 주요 임무는 웹 페이지를 크롤링하고 웹 콘텐츠를 스파이더(Spiders)에게 반환하는 것입니다.4. 스파이더
스파이더는 Scrapy 사용자가 직접 정의하여 웹 페이지를 구문 분석하고 지정된 URL 클래스에서 반환된 콘텐츠를 크롤링합니다. 각 스파이더는 도메인 이름이나 도메인 이름 그룹을 처리할 수 있습니다. 즉, 특정 웹사이트에 대한 크롤링 및 구문 분석 규칙을 정의하는 데 사용됩니다. 스파이더의 전체 크롤링 과정(주기)은 다음과 같습니다. 1) 먼저 첫 번째 URL의 초기 요청을 받고, 요청이 반환되면 콜백 함수를 호출합니다. 첫 번째 요청은 start_requests() 메서드를 호출하여 이루어집니다. 이 메서드는 기본적으로 start_urls의 Url에서 요청을 생성하고 구문 분석을 수행하여 콜백 함수를 호출합니다.2). 콜백 함수에서는 웹페이지 응답을 구문 분석하고 항목 개체, 요청 개체 또는 둘 다의 반복을 반환할 수 있습니다. 이러한 요청에는 콜백도 포함되며 Scrapy로 다운로드된 다음 지정된 콜백으로 처리됩니다.
3) 콜백 함수에서는 Xpath 선택기를 사용하여 웹사이트의 콘텐츠를 구문 분석하고(BeautifuSoup, lxml 또는 원하는 다른 프로그램을 사용할 수도 있음) 구문 분석된 데이터 항목을 생성합니다.
4) 마지막으로 스파이더에서 반환된 프로젝트는 일반적으로 프로젝트 파이프라인으로 이동합니다.
5. 아이템 파이프라인
프로젝트 파이프라인의 주된 역할은 스파이더가 웹페이지에서 추출한 아이템을 처리하는 것입니다. . 프로젝트에서 그의 주요 임무는 데이터를 명확하게 확인하고 저장하는 것입니다. 페이지가 스파이더에 의해 구문 분석되면 프로젝트 파이프라인으로 전송되고 데이터는 여러 특정 시퀀스를 통해 처리됩니다. 각 프로젝트 파이프라인의 구성 요소는 간단한 메서드를 사용하는 Python 클래스입니다. 이들은 프로젝트를 인수하고 접근 방식을 실행하지만 프로젝트 파이프라인의 다음 단계를 계속 진행해야 할지, 아니면 처리하지 않고 폐기해야 할지 결정해야 합니다. 프로젝트 파이프라인에서 일반적으로 수행되는 프로세스는 다음과 같습니다. 1) HTML 데이터 정리2) 구문 분석된 데이터를 확인합니다(프로젝트에 필수 필드가 포함되어 있는지 확인). 3 ) 중복된 데이터인지 확인하세요(중복되면 삭제하세요)
4) 파싱된 데이터를 데이터베이스에 저장하세요
6. >다운로드 미들웨어는 Scrapy 엔진과 다운로더 사이에 위치한 후크 프레임워크로 주로 Scrapy 엔진과 다운로더 간의 요청과 응답을 처리합니다. Scrapy의 기능을 확장하는 사용자 정의 코드 방법을 제공합니다. 다운로드 브로커는 요청과 응답을 처리하는 후크 프레임워크입니다. Scrapy에 대한 전역 제어를 즐기는 가볍고 낮은 수준의 시스템입니다.
7. 스파이더 미들웨어(Spider middleware)스파이더 미들웨어는 Scrapy 엔진과 스파이더 사이의 Hook 프레임워크로 주로 하는 일이 스파이더의 응답 입력과 요청 출력을 처리합니다. 이는 사용자 정의 코드를 사용하여 Scrapy의 기능을 확장하는 방법을 제공합니다. 스파이더 미들웨어는 Scrapy의 스파이더 처리 메커니즘에 연결되는 프레임워크로, 스파이더로 전송된 요청을 처리하고 스파이더가 얻은 응답 콘텐츠와 항목을 반환하는 사용자 정의 코드를 삽입할 수 있습니다.
8. Scheduler 미들웨어(Scheduling middleware)스케줄링 미들웨어는 Scrapy 엔진과 스케줄링 사이의 미들웨어로 주로 전송을 통해 작업을 수행합니다. Scrapy 엔진에서 스케줄러로의 요청 및 응답입니다. 그는 Scrapy의 기능을 확장하기 위한 사용자 정의 코드를 제공합니다.
3. 데이터 처리 과정
Scrapy의 전체 데이터 처리 과정은 Scrapy 엔진에 의해 제어되며 주요 작동 방식은 다음과 같습니다.
엔진은 도메인 이름을 열고 스파이더는 도메인 이름을 처리하여 스파이더가 첫 번째 크롤링된 URL을 얻을 수 있도록 합니다.
엔진은 스파이더에서 크롤링해야 하는 첫 번째 URL을 얻은 다음 이를 스케줄러에서 요청으로 예약합니다.
엔진은 스케줄러에서 크롤링할 다음 페이지를 가져옵니다.
스케줄러는 다음 크롤링 URL을 엔진에 반환하고, 엔진은 이를 다운로드 미들웨어를 통해 다운로더에게 보냅니다.
다운로더가 웹페이지를 다운로드하면 다운로드 미들웨어를 통해 응답 내용이 엔진으로 전송됩니다.
엔진은 다운로더로부터 응답을 받아 스파이더 미들웨어를 통해 스파이더로 보내 처리합니다.
스파이더는 응답을 처리하고 크롤링된 항목을 반환한 다음 엔진에 새 요청을 보냅니다.
엔진이 프로젝트 파이프라인을 캡처하고 스케줄러에 요청을 보냅니다.
시스템은 일정에 요청이 없을 때까지 두 번째 단계 이후의 작업을 반복한 후 도메인에서 엔진 연결을 끊습니다.
4. 드라이버
Scrapy는 Twisted가 작성한 인기 있는 Python 이벤트 기반 네트워크 프레임워크입니다.
위 내용은 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되기를 바랍니다. 또한 모든 분들이 PHP 중국어 웹사이트를 구독하시기를 바랍니다.
Python 크롤링 프레임워크인 Scrapy의 아키텍처와 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!