Похоже, что scrapy.spiders.CrawlSpider не работает вместе с Spla sh. Все правила CrawlSpider игнорируются, когда выдают SplashRequest в методе start_requests. Я что-то не так делаю?
import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
from scrapy_splash import SplashRequest
script = """
function main(splash, args)
splash.html5_media_enabled=true
splash:set_user_agent(splash.args.user_agent)
assert(splash:go(args.url))
assert(splash:wait(1))
return {
html = splash:html(),
}
end
"""
class TestSpider(CrawlSpider):
name = 'test'
start_urls = ['https://www.google.com']
def start_requests(self):
for url in self.start_urls:
yield SplashRequest(url,
callback=self.parse,
endpoint='execute',
args={
'lua_source': script,
'user_agent': self.settings.get('USER_AGENT')
}
)
rules = (
Rule(
LinkExtractor(
allow='',
),
callback='parse_test', follow=True
),
)
def parse_test(self, response):
self.logger.info(response)