pyspider的age参数设定

发布于 2022-09-04 18:52:17 字数 991 浏览 12 评论 0

关于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值设定,那么会以哪个为准呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

写给空气的情书 2022-09-11 18:52:17
  1. 「直接忽略抓取的请求,完全不进行此次抓取任务」

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文