728x90
반응형
1. MongoDB 파이썬 드라이버 설치
- 크롤링 프로젝트의 가상환경에 pymongo 패키지를 설치합니다
pip install pymongo
2. MongoDB 설정
- MongoDB 서버가 실행 중이어야 합니다. 로컬 머신에 MongoDB가 설치되어 있지 않은 경우, 공식 MongoDB 웹사이트에서 MongoDB Community Edition을 다운로드하고 설치합니다.
- MongoDB 서버가 실행 중인 호스트 및 포트 정보를 기억해두어야 합니다.
3. Scrapy 설정 파일 수정
- Scrapy 프로젝트의 settings.py 파일을 열고 다음과 같이 설정을 추가합니다
MONGODB_URI = 'mongodb://localhost:27017/' # MongoDB 서버 호스트 및 포트 정보 입력
MONGODB_DATABASE = 'your_database_name' # 사용할 MongoDB 데이터베이스 이름
ITEM_PIPELINES = {
'your_project_name.pipelines.MongoDBPipeline': 300, # 파이프라인 우선순위 설정
}
4. Scrapy 파이프라인 구현
- Scrapy 파이프라인을 사용하여 MongoDB에 데이터를 저장하는 파이프라인을 구현합니다.
- Scrapy 프로젝트의 pipelines.py 파일을 열고 다음과 같이 파이프라인을 작성합니다.
import pymongo
class MongoDBPipeline:
collection_name = 'tickets' # MongoDB에 저장할 컬렉션 이름
def __init__(self, mongodb_uri, database_name):
self.mongodb_uri = mongodb_uri
self.database_name = database_name
@classmethod
def from_crawler(cls, crawler):
mongodb_uri = crawler.settings.get('MONGODB_URI') # Scrapy 설정에서 MongoDB URI 가져오기
database_name = crawler.settings.get('MONGODB_DATABASE') # Scrapy 설정에서 MongoDB 데이터베이스 이름 가져오기
return cls(mongodb_uri, database_name)
def open_spider(self, spider):
self.client = pymongo.MongoClient(self.mongodb_uri)
self.db = self.client[self.database_name] # 데이터베이스 선택
def close_spider(self, spider):
self.client.close()
def process_item(self, item, spider):
self.db[self.collection_name].insert_one(dict(item))
return item
크롤링한 데이터과 MongoDB와 같이 NoSQL 데이터베이스 시스템을 사용하면 좋은 이유는 아래와 같다.
- 유연한 스키마: NoSQL 데이터베이스는 스키마가 고정되어 있지 않아 데이터 구조를 유연하게 변경할 수 있습니다. 크롤링 작업은 다양한 형식의 데이터를 가져올 수 있으며, 이러한 데이터를 유연하게 저장하기에 적합합니다.
- 확장성: NoSQL 데이터베이스는 수평적으로 확장 가능한 아키텍처를 가지고 있습니다. 크롤링은 대량의 데이터를 수집하므로, 이러한 데이터를 처리하고 저장하기 위해 확장성이 중요합니다. NoSQL 데이터베이스는 분산 아키텍처를 활용하여 대량의 데이터를 처리하고 저장할 수 있습니다.
- 비정형 데이터 지원: 크롤링한 데이터는 종종 비정형 형식을 가지며, 관계형 데이터베이스에 저장하기에는 적합하지 않을 수 있습니다. NoSQL 데이터베이스는 비정형 데이터를 유연하게 저장하고 쿼리할 수 있는 기능을 제공하여 크롤링 데이터의 저장과 처리를 용이하게 합니다.
- 분산 데이터 처리: 크롤링 작업은 여러 웹 페이지에서 데이터를 수집하는 작업입니다. NoSQL 데이터베이스는 분산 데이터 처리를 지원하여 크롤링한 데이터를 효율적으로 처리하고 병렬로 작업할 수 있습니다.
- 빠른 읽기 및 쓰기 성능: NoSQL 데이터베이스는 특정 작업에 최적화된 구조를 가지고 있으며, 데이터를 빠르게 쓰고 읽을 수 있습니다. 크롤링한 데이터는 실시간으로 업데이트되는 경우가 많으므로 빠른 읽기 및 쓰기 성능은 중요합니다.
- 확장된 쿼리 기능: NoSQL 데이터베이스는 다양한 쿼리 기능을 제공합니다. 크롤링한 데이터를 쿼리하여 필요한 정보를 추출하고 필터링할 수 있습니다.
- 클라우드 호환성: 많은 NoSQL 데이터베이스 시스템은 클라우드 환경에서 원활하게 실행될 수 있도록 설계되었습니다. 크롤링 작업은 대량의 데이터를 다루기 때문에 클라우드 기반 NoSQL 데이터베이스는 확장성과 유연성을 제공하는데 도움이 될 수 있습니다.
출처: ChatGPT
728x90
반응형
'공부기록 > 파이썬' 카테고리의 다른 글
Python + Selenium 특정 요소가 로드된 후 원하는 데이터 가지고 오기(선택자 종류 소개) (1) | 2023.06.30 |
---|---|
Python + Selenium으로 크롤링 시작하기(예제 있음) (0) | 2023.06.29 |
Scrapy 프록시 설정 및 오류 해결 방법 Crawled (404) <GET https://domain/robots.txt> (referer: None) (0) | 2023.06.28 |
scrapy로 크롤링 시작하기(크롤링할 도메인이 여러 개일 경우) (0) | 2023.06.27 |
django 처음 시작하기(윈도우, vscode) (0) | 2023.06.26 |