728x90
반응형
이미 phython 가상 환경을 생성하신 분들은 2번부터 참고해주세요.
1. 가상 환경(Virtual Environment) 설정
- 명령 프롬프트(cmd)를 열고 프로젝트를 생성할 디렉토리로 이동한다.
- 가상 환경을 생성하고 활성화한다. 아래의 명령을 실행한다.
python -m venv myenv
cd ./myenv\Scripts
./activate.bat
2. Scrapy 설치
- 가상환경을 활성화한 상태에서 다음 명령을 실행하여 Scrapy를 설치한다:
- pip install scrapy
3. Scrapy 프로젝트 생성
- 원하는 디렉토리로 이동하여 Scrapy 프로젝트를 생성한다.
- 터미널 또는 명령 프롬프트(cmd)에서 다음 명령을 실행한다:
- scrapy startproject myproject
- myproject 는 프로젝트의 이름으로 원하는 이름으로 변경할 수 있다.
4. 스파이더 구현
- 생성된 스파이더 파일(myspider.py)을 편집하여 크롤링 로직을 구현한다.
- 스파이더 파일은 myproject/spiders 디렉토리에 있음.
- start_requests 메서드에서 시작 URL을 설정하고, parse 메서드에서 페이지를 파싱하고 원하는 데이터를 추출한다.
cd myproject
scrapy genspider myspider example.com - myspider는 스파이더의 이름입니다. 원하는 이름으로 변경할 수 있다.
- example.com은 크롤링할 첫 번째 도메인. 해당 도메인을 기반으로 스파이더가 생성된다.
5. 크롤링한 도메인이 여러 개일 경우 스파이더 파일(myspider.py)을 열어 수정
- 스파이더 파일은 myproject/spiders 디렉토리에 있다.
- allowed_domains 속성에 크롤링할 도메인들을 추가.
- example.com, example2.com, example3.com은 크롤링할 도메인들로, 필요에 따라 추가 또는 수정하면 된다.
class MySpider(scrapy.Spider):
name = 'myspider'
allowed_domains = ['example.com', 'example2.com', 'example3.com']
# ...
- 스파이더 파일의 start_requests 메서드와 parse 메서드를 구현한다.
- start_requests 메서드에서는 각 도메인별로 시작 URL을 생성한다.
def start_requests(self):
start_urls = [
'http://example.com/page1',
'http://example2.com/page1',
'http://example3.com/page1',
]
for url in start_urls:
yield scrapy.Request(url=url, callback=self.parse)
- parse 메서드에서는 도메인별로 페이지를 파싱하고 원하는 데이터를 추출한다.
def parse(self, response):
# 도메인별로 페이지 파싱 및 데이터 추출 로직 구현
domain = response.url.split('/')[2] # 도메인 추출
if domain == 'example.com':
list = response.css('.list')
for itm in list:
date = itm.css('.entry_date').get()
#...
- 스파이더 파일을 저장한다.
정리하자면, allowed_domains 속성에 크롤링할 도메인들을 추가하고, start_requests 메서드에서 각 도메인별로 시작 URL을 생성하여 parse 메서드에서 도메인별로 페이지를 파싱하고 데이터를 추출할 수 있다.
6. 크롤링 실행
- 프로젝트 디렉토리에서 다음 명령을 실행하여 크롤링을 시작
scrapy crawl myspider - myspider는 실행할 스파이더의 이름이다.
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 & MongoDB(크롤링한 데이터 MongoDB에 저장하는 방법 & MongoDB 선택한 이유) (0) | 2023.06.28 |
django 처음 시작하기(윈도우, vscode) (0) | 2023.06.26 |