2017-10-12 11 views
0

parse_page関数内にwhileループがあり、それが限界に達するまでブレーキしたくありません。関数から別の関数への引数の受け渡し

私は関数parse_pageからdescriptionに3つの引数を渡してから、description_itemに行きます。

そして、それは関数description_itemを解析した後、parse_page関数内のwhileループに戻りたいと思います。

これは私のコードの一部です:

def parse_page(self, response): 
    item = TestItem() 

    ... # more code here 

    while i <= len(response.xpath("//script[2]//text()").extract_first()): 
     # parsing url 
     parsed = urlparse.urlparse(url) 
     tranz_type = urlparse.parse_qs(parsed.query)['tranz'] 
     categ_type = urlparse.parse_qs(parsed.query)['categ'] 

     id = js2xml.jsonlike.make_dict(jstree.xpath("//var[@name='ANUNTURI']//property[@name='ID']")[i]) 
     item['url'] = url 

     item['id'] = id[1] 
     item['tranz_type'] = tranz_type 
     item['categ_type'] = categ_type 
     i += 1 

     request = Request(response, callback=self.description) 
     request.meta['id'] = id 
     request.meta['tranz_type'] = tranz_type 
     request.meta['categ_type'] = categ_type 

     #yield item 
     return request 


def description(self, response): 

    id =response.meta.get('id') 
    tranz_type =response.meta.get('tranz_type') 
    categ_type =response.meta.get('categ_type') 

    data = {'id_anunt': id, 'tranz': tranz_type, 'categ': categ_type, 'mc': '1', 'id_cautare': '0'} 

    print data 

    req = FormRequest.from_response(response, url="http://map.imobiliare.ro/map/serv/detalii", formdata=data, 
            callback=self.description_items) 

    yield req 

def description_item(self, response): 

    item = TestItem() 

    item['link'] = json.loads(response.body).get('link') 

    yield item 

答えて

1

あなたはRequestを初期化するときmetaをパラメータに辞書を割り当てることができます。

メタ(辞書) - Request.meta属性の初期値。 が指定されている場合、このパラメータで渡されたdictはシャローコピーされます。

response.metaでアクセスできます。

関連する問題