2017-08-01 4 views
2

scrapy.Requestソースコードscrapy、なぜscrapy.Requestクラスはデフォルトでparse()メソッドを呼び出しますか?

class Request(object_ref): 

def __init__(self, url, callback=None, method='GET', headers=None, body=None, 
      cookies=None, meta=None, encoding='utf-8', priority=0, 
      dont_filter=False, errback=None, flags=None): 

    self._encoding = encoding # this one has to be set first 
    self.method = str(method).upper() 
    self._set_url(url) 
    self._set_body(body) 
    assert isinstance(priority, int), "Request priority not an integer: %r" % priority 
    self.priority = priority 

    assert callback or not errback, "Cannot use errback without a callback" 
    self.callback = callback 
    self.errback = errback 

の一部

をなぜscrapy.Requestクラスがデフォルトでparse()メソッドを呼び出しん、と私はかなりのプロセスを理解していない....

が、このデフォルトのコールバックはなしですが、私はこの

if "msg" in text_json and text_json["msg"] == "login": 
     for url in self.start_urls: 
      yield scrapy.Request(url, dont_filter=True, headers=self.headers) 

答えて

0

によって非常に困惑しています。このあるものです、これを見るrequest.callback or spider.parse部分:

def call_spider(self, result, request, spider): 
    result.request = request 
    dfd = defer_result(result) 
    dfd.addCallbacks(request.callback or spider.parse, request.errback) 
    return dfd.addCallback(iterate_spider_output) 
関連する問題