停止程序,直到在Scrapy中下载响应数据

时间:2014-12-24 23:13:28

标签: python scrapy

我一直在尝试使用Scrapy(Python)构建蜘蛛,并遇到了一个我无法解决的问题。 这是一段代码:

    def parse(self, response):        
        print "one"
        yield scrapy.FormRequest.from_response(
               response,
               url="url.php",
               callback=self.funkcija2,
            )
        print "three"

    def funkcija2(self, response):
        print "two"

这打印出一个,三个,然后两个。据我所知,这里发生的是它打印一个,然后等待直到响应被下载并且在打印三个期间,然后它才执行打印两个的回调函数。但是,我想做的是在程序下载响应数据之前停止程序,执行回调函数,然后继续执行请求之后的操作。那可能吗?

我对回调函数调用时的理解是否正确?任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

我不认为在这种情况下yield的使用是正确的,因为调用parse(self, response)函数的结果将是一个生成器。至于你的其他问题,scrapy是一个异步框架,所以如果你想确保在下载响应后执行某些操作,你需要将它放在回调函数中。在您的情况下,这意味着语句print "three"应该位于print "two"中的funkcija2语句之后。