2017-12-19 46 views
0

어떤 이유로 Splash를 사용할 때 어떤 요청이 있어도 403이 있습니다. 내가 뭘 잘못 했니?임의의 사이트에 대해 Scrapy + Splash return 403

https://github.com/scrapy-plugins/scrapy-splash 다음 나는 모든 설정 설정 : 고정 표시기와

SPLASH_URL = 'http://localhost:8050' 
DOWNLOADER_MIDDLEWARES = { 
    'scrapy_splash.SplashCookiesMiddleware': 723, 
    'scrapy_splash.SplashMiddleware': 725, 
    'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810, 
} 
SPIDER_MIDDLEWARES = { 
    'scrapy_splash.SplashDeduplicateArgsMiddleware': 100, 
} 
DUPEFILTER_CLASS = 'scrapy_splash.SplashAwareDupeFilter' 
HTTPCACHE_STORAGE = 'scrapy_splash.SplashAwareFSCacheStorage' 

시작 시작을

sudo는 고정 표시기 실행 -p 8050 : 8050 scrapinghub/시작

스파이더 코드 :

import scrapy 

from scrapy import Selector 
from scrapy_splash import SplashRequest 


class VestiaireSpider(scrapy.Spider): 
    name = "vestiaire" 
    base_url = "https://www.vestiairecollective.com" 
    rotate_user_agent = True 

    def start_requests(self): 
     urls = ["https://www.vestiairecollective.com/men-clothing/jeans/"] 
     for url in urls: 
      yield SplashRequest(url=url, callback=self.parse, meta={'args': {"wait": 0.5}}) 

    def parse(self, response): 
     data = Selector(response) 
     category_name = data.xpath('//h1[@class="campaign campaign-title clearfix"]/text()').extract_first().strip() 
     self.log(category_name) 
,363,210

는 다음 나는 거미 실행

scrapy 크롤링 테스트

을 그리고 요청 URL에 대한 (403)을 다시 얻을 :

2017년 12월 19일 22시 55분 17초 [ scrapy.utils.log] 정보 : Scrapy 1.4.0 시작 (bot : crawlers) 2017-12-19 22:55:17 [scrapy.utils.log] 정보 : 재정의 설정 : { 'DUPEFILTER_CLASS': 'scrapy_splash .SplashAwareDupeFilter ','CONCURR ENT_REQUESTS ': 10, 'NEWSPIDER_MODULE '' ': ['crawlers.spiders ','ROBOTSTXT_OBEY ': 사실,'COOKIES_ENABLED crawlers.spiders ','SPIDER_MODULES ' 거짓'BOT_NAME ':'크롤러 ', 'HTTPCACHE_STORAGE' 'scrapy_splash.SplashAwareFSCacheStorage'} 2017년 12월 19일 22시 55분 17초 [scrapy.middleware] INFO : 사용 확장 : [ 'scrapy.extensions.telnet.TelnetConsole', 'scrapy.extensions. logstats.LogStats ', 'scrapy.extensions.memusage.MemoryUsage ', 'scrapy.extensions.corestats.CoreStats '] 2017-12-19 22:55:17 [scrapy.middleware] 정보 : 사용 가능 다운로더 미들웨어 : [ 'scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware', '치료 .downloadermiddlewares.httpauth.HttpAuthMiddleware ', 'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware ', 'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware ', 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware ', 'scrapy.downloadermiddlewares.retry.RetryMiddleware ' 'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware ', 'scrapy.downloadermiddlewares.redirect.RedirectMiddleware ', 'scrapy_splash.SplashCookiesMiddleware ', 'scrapy_splash.SplashMiddleware ', 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware ', 'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware', 'scrapy.downloadermiddlewares.stats.DownloaderStats'] 2017년 12월 19일 22시 55분 17초 [scrapy.middleware] INFO : 활성화 거미 미들웨어 : [ 'scrapy.spidermiddlewares.httperror.HttpErrorMiddleware' 'scrapy_splash.SplashDeduplicateArgsMiddleware' , 'scrapy.spidermiddlewares.offsite.OffsiteMiddleware' 'scrapy.spidermiddlewares.referer.RefererMiddleware' 'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware' 'scrapy.spidermiddlewares.depth.DepthMiddleware'] 2017년 12월 19일 22:55:17 [scrapy.미들웨어] 정보 : 활성화 된 항목 파이프 라인 : [ 'scrapy.pipelines.images.ImagesPipeline'] 2017-12-19 22:55:17 [scrapy.core.engine] INFO : Spider opened 2017-12-19 22:55 : 17 [scrapy.extensions.logstats] 정보 : 크롤링 된 0 페이지 (0 페이지/분), 0 개 항목 (0 개 항목/분) 2017-12-19 22:55:17 [scrapy.extensions. telnet] DEBUG : 텔넷 콘솔 수신 대기 127.0.0.1:6023 2017-12-19 22:55:20 [scrapy.core.engine] 디버그 : 크롤링 됨 (200) https://www.vestiairecollective.com/robots.txt > (referer : 없음) 2017-12-19 22:55:22 [scrapy.core.engine] 디버그 : 크롤링 됨 (403) http : // localhost : 8050/robots.txt> (참조 : 없음) 2017- 12-19 22:55:23 [scrapy.core.engine] 디버그 : 크롤링 됨 (403) https://www.vestiairecollective.com/men-clothin g/청바지/비아 http://localhost:8050/render.html> (참조 자 : 없음) 2017년 12월 19일 22시 55분 23초 [scrapy.spidermiddlewares.httperror] INFO : 무시 응답 < 403 https://www.vestiairecollective.com/men-clothing/jeans/> : HTTP 상태 코드 처리되지 아닌지 허용 2017-12-19 22:55:23 [scrapy.core.engine] 정보 : 닫는 거미 (완료) 2017-12-19 22:55:23 [scrapy.statscollectors] 정보 : 덤핑 치료 통계 : { 'downloader/request_bytes': 1254, 'downloader/request_count': 3, 'downloader/request_method_count/GET': 2, 'downloader/request_method_count/POST': 1, 'downloader/response_bytes': 2793, '다운로더/response_count ': 3, '다운로더/응답 _ 통계 _ 개수/200 ': 1, 'downloader/response_status_count/403 ': 2,'finish_reason ': '완료 ','finish_time ': datetime.datetime (2017, 12, 19, 20, 55, 23, 440598) mempage/start ': 1, 'httperror/response_ignored_status_count/403 ': 1,'log_count/DEBUG ': 4,'log_count/INFO ': 8,'memusage/max ': 53850112, 'memusage/startup ' : 53850112, 'response_received_count': 3, 'scheduler/dequeued': 2, 'scheduler/dequeued/memory': 2, '스케줄러/대기열에 넣기': 2, '스케줄러/대기열에 넣기/메모리': 2, '스플래시/start_time ': datetime.datetime (2017, 12, 19, 20, 55, 17, 372080)} 2017 -12-19 22:55:23 [scrapy.core.engine] 정보 : 스파이더 마감 (완료)

+0

치료의'settings.py'에서'ROBOTSTXT_OBEY = False'를 사용해 보셨습니까? –

+0

또한 스플래시 문서에서 : Do not forget, OS X 또는 Windows에서 Docker Machine을 사용하는 경우 Docker의 가상 머신의 IP 주소로 설정해야합니다 (예 : SPLASH_URL = ' http://192.168.59.103:8050/ ' ' –

+0

'ROBOTSTXT_OBEY = False' 문제가 있습니다. –

답변

1

사용자 에이전트에 문제가 있습니다. 많은 사이트에서 액세스를 요구합니다. 사이트에 액세스하여 금지를 피하는 가장 쉬운 방법은이 lib를 사용하여 사용자 에이전트를 임의 화하는 것입니다. https://github.com/cnu/scrapy-random-useragent