2017-08-03 17 views
0

使用可能な変数で治療要求の結果を取得する方法。治療要求の結果を取得

def parse_node(self,response,node): 
    yield Request('LINK',callback=self.parse_listing) 
def parse_listing(self,response): 
    for agent in string.split(response.xpath('//node[@id="Agent"]/text()').extract_first() or "",'^'): 
     HERE=Request('LINK',callback=self.parse_agent) 
     print HERE 
def parse_agent(self,response): 
    yield response.xpath('//node[@id="Email"]/text()').extract_first() 

私はHERE=Request('LINK',callback=self.parse_agent)から結果を取得し、それらを印刷しようとしています。 parse_agentは電子メールを受け取るはずですが、それを取得してparse_listingの中で使用したいと思います。

答えて

0
def parse_listing(self, response): 
    for agent in string.split(response.xpath('//node[@id="Agent"]/text()').extract_first() or "", '^'): 
     HERE = scrapy.Request('LINK', callback=self.parse_agent) 
     # call this req or something calls parse_agent(link) 
     yield HERE # this will yield to callback which will print or log 


def parse_agent(self, response): 
    print response #response is the parsed page from HERE) 
    email = response.xpath('//node[@id="Email"]/text()').extract_first() #something 

    print email # logging is better 
    #import logging 
    #logging.log(logging.INFO, "info from page") 
    yield email #yield to whatever function 
+0

parse_agentからparse_listingに "email"を得るにはどうすればいいですか? –

+0

構文解析エージェントは、コールバックを生成する場合にのみ、情報を構文解析するために情報を渡すことができます。 callback = self.parse_agentこれは、治療の流れがどのように働くかです。メソッド1は開始リンクを解析し、メソッド2はメソッド3に戻ります。scrapy.Request(link、callback = {methodname} –

+0

)さらに明確化が必要な場合は教えてください。 。 –

0

最初の答えの下のご意見をもとに、私はあなたが本当に必要なことは(そこに例を参照)目的のためにscrapy-inline-requestsを使用していると思います。あなたのコードは次のようになります:

def parse_node(self, response, node): 
    yield Request('LINK', callback=self.parse_listing) 

@inline_requests 
def parse_listing(self, response): 
    for agent in string.split(response.xpath('//node[@id="Agent"]/text()').extract_first() or "",'^'): 
     agent_response = yield Request('LINK') 
     email = agent_response.xpath('//node[@id="Email"]/text()').extract_first()