2015-10-13 77 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