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

Scrapy 프록시 설정 및 오류 해결 방법 Crawled (404) <GET https://domain/robots.txt> (referer: None)

by 책읽는 개발자 ami 2023. 6. 28.
728x90
반응형

1. 프록시 미들웨어 설치

  • 프록시 서버를 사용하기 위해 scrapy-proxies 패키지를 설치합니다. 명령 프롬프트(Windows) 또는 터미널(macOS/Linux)에서 다음 명령어를 실행합니다.
    pip install scrapy-proxies

2. settings.py 파일 수정

  • Scrapy 프로젝트의 settings.py 파일을 열고 다음과 같이 설정을 추가합니다.
DOWNLOADER_MIDDLEWARES = {
    'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 100,  # 기본 프록시 미들웨어 비활성화
    'scrapy_proxies.RandomProxy': 200,  # 프록시 미들웨어 활성화
}

PROXY_LIST = 'path/to/proxy/list.txt'  # 프록시 목록 파일 경로 입력
PROXY_MODE = 0  # 프록시 모드 설정 (0: 사용 가능한 프록시 무작위 선택, 1: 순차적으로 선택)
  • PROXY_LIST에 프록시 목록 파일의 경로를 입력해야 합니다. 이 파일에는 사용하려는 프록시 서버의 주소와 포트 정보가 포함되어 있어야 합니다.

3. 프록시 목록 파일 작성

  • PROXY_LIST에 지정한 경로에 프록시 목록 파일을 생성하고 사용하려는 프록시 서버의 주소와 포트 정보를 기록합니다. 각 줄마다 하나의 프록시 서버 정보를 입력합니다.
  • 무료 프록시 서버 정보는 아래에서 구할 수 있다.
    https://free-proxy-list.net/
 

Free Proxy List - Just Checked Proxy List

Free proxies from free-proxy-list.net Updated at 2023-06-26 09:22:03 UTC. 209.97.150.167:3128 190.61.88.147:8080 161.35.70.249:3128 13.81.217.201:80 78.28.152.113:80 167.99.124.118:80 94.158.53.145:3128 103.68.194.89:45787 103.197.251.202:80 46.101.219.34:

free-proxy-list.net

list.txt 샘플(아래 파일처럼 ip:port를 작성해주면 된다.)

http://190.x.x.x:8080
http://200.x.x.x:80

4. 프록시 사용 설정

  • Scrapy 스파이더 클래스에서 custom_settings 속성을 사용하여 프록시 사용 설정을 추가할 수 있습니다:
class MySpider(scrapy.Spider):
    name = 'myspider'

    custom_settings = {
        'DOWNLOADER_MIDDLEWARES': {
            'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 100,
            'scrapy_proxies.RandomProxy': 200,
        },
        'PROXY_LIST': 'path/to/proxy/list.txt',
        'PROXY_MODE': 0,
    }

    # 스파이더 코드 작성

 

발생할 수 있는 에러

Crawled (404) <GET https://domain/robots.txt> (referer: None)
 
 

ROBOTSTXT_OBEY 설정을 False로 변경하면 Scrapy가 robots.txt 파일을 무시하고 크롤링을 진행할 수 있습니다. 이를 통해 robots.txt 파일이 없는 웹 사이트를 크롤링할 수 있습니다.

settings.py 파일에서 다음과 같이 ROBOTSTXT_OBEY 설정을 변경할 수 있습니다.
ROBOTSTXT_OBEY = False

위의 설정을 사용하면 Scrapy가 robots.txt 파일을 무시하고 크롤링을 계속할 수 있습니다. 그러나 이 경우에는 웹 사이트의 크롤링 규칙을 무시하게 되므로 주의해야 한다.

728x90
반응형