2017-10-12 3 views
0

parse_page 함수 내에서 while 루프가 있고 제한에 도달 할 때까지 제동하고 싶지 않습니다.함수에서 다른 함수로 인수를 전달

parse_page에서 3 개의 인수를 description으로 전달한 다음 description_item으로 이동하려고합니다.

그리고 함수를 구문 분석 한 후 description_itemparse_page 함수 내에서 while 루프로 돌아가고 싶습니다. Request 초기화 할 때 당신은 meta을 매개하는 딕셔너리를 할당 할 수

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

:

이 내 코드의 일부입니다

메타 (DICT를 참조) - Request.meta 속성의 초기 값 . 이 주어지면이 매개 변수에서 전달 된 dict는 얕은 복사됩니다.

그런 다음 response.meta으로 액세스 할 수 있습니다.

관련 문제