BaseSpider和CrawlSpider在一起

时间:2014-02-04 15:34:36

标签: python scrapy

我想知道是否有一种方法可以在scrapy中同时使用Base蜘蛛和Crawl蜘蛛!

假设我只想抓取url中提到的一个start_url并使用抓取蜘蛛抓住同一个start_url中提到的另一个页面,我将如何在同一个程序中使用它们?

1 个答案:

答案 0 :(得分:4)

执行此操作的一种方法是将CrawlSpider与您需要的规则一起使用,并覆盖start_requests方法以生成:

  • 使用CrawlSpider内置魔法解析请求,因此您需要将这些请求设置为self.parse
  • 请求由另一个回调解析

示例:

class MySpider(CrawlSpider):
    ...
    start_urls_crawlspider = (url1, url2,)
    start_urls_basespider = (url3,)

    def start_requests(self):
        for url in self.start_urls_crawlspider :
            yield Request(url, callback=self.parse) # "parse" is the default anyway

        for url in self.start_urls_basespider:
            yield Request(url, callback=self.parse_base)

    def parse_base(self, response):
        ...