어떤 이유로 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] 정보 : 스파이더 마감 (완료)
치료의'settings.py'에서'ROBOTSTXT_OBEY = False'를 사용해 보셨습니까? –
또한 스플래시 문서에서 : Do not forget, OS X 또는 Windows에서 Docker Machine을 사용하는 경우 Docker의 가상 머신의 IP 주소로 설정해야합니다 (예 : SPLASH_URL = ' http://192.168.59.103:8050/ ' ' –
'ROBOTSTXT_OBEY = False' 문제가 있습니다. –