2015-10-13 76 views
0

我是一些Java/C#背景的Python新手。我遇到了Scrapy教程中的回调语法和一个意想不到的语法,我想了解它。作为Python中的参数传递方法(Scrapy) - 语法

在下面的代码parse_articles_follow_next_page的最后一行是方法,按我想象我希望像括号的响应参数传递有: yield scrapy.Request(url, self.parse_articles_follow_next_page(someresponseobject))

什么样的Python语法,以使其适用有没有括号和传递参数,我可以在哪里阅读更多关于它的内容?

def parse_articles_follow_next_page(self, response): 
    for article in response.xpath("//article"): 
     item = ArticleItem() 
     #... extract article data here 
     yield item 

    next_page = response.css("ul.navigation > li.next-page > a::attr('href')") 
    if next_page: 
     url = response.urljoin(next_page[0].extract()) 
     yield scrapy.Request(url, self.parse_articles_follow_next_page) 

回答

1

从Scrapy docs,参数,以请求人可以是一个回调:

回调(调用) - 将与此请求的响应被称为(一旦其下载)功能作为其第一个参数。

所以你正在传递一个函数。通过Scrapy的回调机制,响应参数将被传递给该函数。

阅读有关传递函数作为参数: python function as a function argument?

或回调一般:https://en.wikipedia.org/wiki/Callback_%28computer_programming%29

+0

很好,谢谢 - 我可能不会再短期内室外使用scrapy的 - 但它是很好的了解 – Turo