Wir haben scrapy-splash
middleware verwendet, um die geschabte HTML-Quelle über die JavaScript-Engine Splash
zu übergeben, die in einem Andock-Container ausgeführt wird.Scrapy Shell und Scrapy Splash
Wenn wir Splash in der Spinne verwenden möchten, konfigurieren wir mehr required project settings und ergeben ein Request
spezifische meta
arguments Angabe:
yield Request(url, self.parse_result, meta={
'splash': {
'args': {
# set rendering arguments here
'html': 1,
'png': 1,
# 'url' is prefilled from request url
},
# optional parameters
'endpoint': 'render.json', # optional; default is render.json
'splash_url': '<url>', # overrides SPLASH_URL
'slot_policy': scrapyjs.SlotPolicy.PER_DOMAIN,
}
})
Dies als dokumentiert funktioniert. Aber wie können wir scrapy-splash
innerhalb der Scrapy Shell verwenden?
Es stimmt, es gibt keine 'DEFAULT_REQUEST_META' wie es a [DEFAULT_REQUEST_HEADERS] (http://doc.scrapy.org/en/latest/topics/settings.html?#std:setting-DEFAULT_REQUEST_HEADERS), die eine schön wäre, Zusatz. Es gibt offene Diskussionen darüber, Splash standardmäßig über eine Middleware zu aktivieren (siehe https://github.com/scrapinghub/scrapyps-splash/issues/11). Eine weitere Option ist die Unterklasse scrapy-splash mdw und erzwingt Einstellungen dort. Ideen willkommen auf https://github.com/scrapinghub/scrapy-splash/issues –