pyspider的age参数设定

关于age的两点问题:

@every(minutes=24 * 60)
def on_start(self):
    self.crawl('http://www.example.org/', callback=self.index_page)

@config(age=10 * 24 * 60 * 60)
def index_page(self):
    ...

上面是官方文档给出的一个例子,文档中说因为every设定的值比age小,于是在age范围内,抓取请求会被忽略。我仍然不是很确定,这里所指的忽略,是“直接忽略抓取的请求,完全不进行此次抓取任务”,还是“先将目标页面抓取下来,response传给index_page,然后因为设定的age时间未到,忽略这个response的后续处理”

@every(minutes=12 * 60)
    def on_start(self):
        url = 'https://www.oschina.net/action/ajax/get_more_recommend_blog?classification=0&p=1'
        self.crawl(url, callback=self.index_page, retries=10, age=60*60, headers=self.headers)

    @config(age=10 * 24 * 60 * 60)
    def index_page(self, response):
        for each in response.doc('a[href^="http"]').items():
            self.crawl(each.attr.href, callback=self.detail_page)

如果我在on_start方法中的crawl中设定了一个age值,然后index_page前面也有一个age值设定,那么会以哪个为准呢?

阅读 6.3k
1 个回答
  1. 「直接忽略抓取的请求,完全不进行此次抓取任务」

  2. self.crawl 直接设置的所有参数,优先级大于 @config 设置的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进