Aus irgendeinem Grund habe ich 403 für jede Anfrage bei der Verwendung von Splash. Was ich falsch mache?Scrapy + Splash Return 403 für jede Seite
Nach https://github.com/scrapy-plugins/scrapy-splash ich einrichten alle Einstellungen:
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'
Gestartet Splash mit Docker
sudo Docker run -P 8050: 8050 scrapinghub/splash
Spinne Code:
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)
Dann
Ich betreibe die Spinne:
scrapy Crawl Test
Und eine 403 zum Anfordern url zurück:
2017-12-19 22:55:17 [ scrapy.utils.log] INFO: Scrapy 1.4.0 gestartet (bot: crawlers) 2017-12-19 22:55:17 [scrapy.utils.log] INFO: Überschriebene Einstellungen: {'DUPEFILTER_CLASS': 'scrapy_splash .SplashAwareDupeFilter ',' CONCURR ENT_REQUESTS ': 10, 'NEWSPIDER_MODULE': 'crawlers.spiders', 'SPIDER_MODULES': [' crawlers.spiders'], 'ROBOTSTXT_OBEY': Stimmt, 'COOKIES_ENABLED': False 'BOT_NAME': 'Crawler', 'HTTPCACHE_STORAGE': 'scrapy_splash.SplashAwareFSCacheStorage'} 2017.12.19 22.55.17 [scrapy.middleware] INFO: Aktiviert Erweiterungen: [ 'scrapy.extensions.telnet.TelnetConsole', ‚scrapy.extensions. logstats.LogStats ', ' scrapy.extensions.memuse.MemoryUsage ', ' scrapy.extensions.corestats.CoreStats '] 2017-12-19 22:55:17 [scrapy.middleware] INFO: Downloader-Middleware aktiviert: ['scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware', 'scrapy .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: Aktivierte spider Middle: [ '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.Middleware] INFO: Aktivierte Artikel-Pipelines: ['scrapy.pipelines.images.ImagesPipeline'] 2017-12-19 22:55:17 [scrapy.core.engine] INFO: Spinne eröffnet 2017-12-19 22:55 : 17 [scrapy.extensions.logstats] INFO: Crawlen 0 Seiten (bei 0 Seiten/Minute), geschabt 0 Einzelteile (bei 0 Einzelteilen/Minute) 2017-12-19 22:55:17 [scrapy.extensions. telnet] DEBUG: Telnet-Konsole hört auf 127.0.0.1:6023 2017-12-19 22:55:20 [scrapy.core.engine] DEBUG: Crawled (200) https://www.vestiairecollective.com/robots.txt > (Referer: Keine) 2017-12-19 22:55:22 [scrapy.core.engine] DEBUG: Crawled (403) http: // localhost: 8050/robots.txt> (Referrer: Keine) 2017- 12-19 22:55:23 [scrapy.core.engine] DEBUG: Crawled (403) https://www.vestiairecollective.com/men-clothin g/Jeans/via http://localhost:8050/render.html> (referer: None) 2017.12.19 22.55.23 [scrapy.spidermiddlewares.httperror] INFO Ignoriert Antwort https://www.vestiairecollective.com/men-clothing/jeans/>: HTTP-Statuscode nicht behandelt wird oder nicht, erlaubt 2017-12-19 22:55:23 [scrapy.core.engine] INFO: Schließen Spinne (fertig) 2017-12-19 22:55:23 [scrapy.statscollectors] INFO: Dumping Scrapy stats: { 'downloader/request_bytes': 1254, 'downloader/anfrage_count': 3, 'downloader/request_method_count/GET': 2, 'downloader/anfrage_method_count/POST': 1, 'downloader/response_bytes': 2793, 'downloader/response_count ': 3, ' downloader/response_status_count/200 ': 1, ' Downloader/response_status_count/403 ': 2,' finish_reason ': ' Fertig ',' Fertigstellungszeit ': datetime.datetime (2017, 12, 19, 20, 55, 23, 440598), 'httperror/response_ignored_count': 1, 'httperror/antwort_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/speicher': 2, 'scheduler/enqueued': 2, 'scheduler/eingereiht/speicher': 2, 'splash /render.html/request_count ': 1, ' splash/render.html/response_count/403 ': 1,' start_time ': datetime.datetime (2017, 12, 19, 20, 55, 17, 372080)} 2017 -12-19 22.55.23 [scrapy.core.engine] INFO: Spinne geschlossen (fertig)
Haben Sie 'ROBOTSTXT_OBEY = False' in Scrapys' settings.py' versucht? –
Auch aus der Splash-Dokumentation: 'Vergessen Sie nicht, wenn Sie eine Docker-Maschine unter OS X oder Windows verwenden, müssen Sie dies auf die IP-Adresse der virtuellen Maschine von Docker setzen, zB: SPLASH_URL = ' http://192.168.59.103:8050/ ' ' –
Mit' ROBOTSTXT_OBEY = False' Ich habe das gleiche Problem –