본문 바로가기
공부기록/파이썬

scrapy로 크롤링 시작하기(크롤링할 도메인이 여러 개일 경우)

by 책읽는 개발자 ami 2023. 6. 27.
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
반응형