我一直在尝试使用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"
这打印出一个,三个,然后两个。据我所知,这里发生的是它打印一个,然后等待直到响应被下载并且在打印三个期间,然后它才执行打印两个的回调函数。但是,我想做的是在程序下载响应数据之前停止程序,执行回调函数,然后继续执行请求之后的操作。那可能吗?
我对回调函数调用时的理解是否正确?任何帮助表示赞赏!
答案 0 :(得分:0)
我不认为在这种情况下yield的使用是正确的,因为调用parse(self, response)
函数的结果将是一个生成器。至于你的其他问题,scrapy是一个异步框架,所以如果你想确保在下载响应后执行某些操作,你需要将它放在回调函数中。在您的情况下,这意味着语句print "three"
应该位于print "two"
中的funkcija2
语句之后。