Używamy scrapy-splash
middleware do przekazywania skradzionego źródła HTML przez silnik javascript Splash
działający w kontenerze dokowania.Scrapy Shell i Scrapy Splash
Jeśli chcemy wykorzystać Splash w pająka, możemy skonfigurować kilka required project settings i otrzymując Request
określając konkretne meta
arguments:
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,
}
})
to działa zgodnie z dokumentacją. Ale jak możemy użyć scrapy-splash
wewnątrz Scrapy Shell?
To prawda, że nie ma "DEFAULT_REQUEST_META", ponieważ istnieje [DEFAULT_REQUEST_HEADERS] (http://doc.scrapy.org/en/latest/topics/settings.html?#std:setting-DEFAULT_REQUEST_HEADERS), co byłoby miłym dodanie. Istnieją otwarte dyskusje na temat domyślnego włączenia Splash za pośrednictwem oprogramowania pośredniego (zobacz https://github.com/scrapinghub/scrapy-splash/issues/11). Inną opcją jest podklasa scrapy-splash mdw i wymuszenie tam ustawień. Pomysły mile widziane na https://github.com/scrapinghub/scrapy-splash/issues –