Scrapy - Rastrear várias páginas por item
Eu estou tentando rastrear algumas páginas extras por item para pegar algumas informações de localização.
No final do item antes do retorno, verifico se precisamos rastrear páginas extras para obter as informações. Essencialmente, essas páginas contêm alguns detalhes de local e são uma solicitação simples de obtenção.
Ou sejahttp://site.com.au/MVC/Offer/GetLocationDetails/?locationId=3761&companyId=206
O link acima retorna um select com mais páginas para rastrear - ou um dd / dt com os detalhes do endereço. De qualquer forma, eu preciso extrair essa informação de endereço e anexá-la ao meu item ['locations']
Até agora eu tenho (no final do bloco de análise)
return self.fetchLocations(locations_selector, company_id, item)
locations_selector contém uma lista de locationIds
Então eu tenho
def fetchLocations(self, locations, company_id, item): #response):
for location in locations:
if len(location)>1:
yield Request("http://site.com.au/MVC/Offer/GetLocationDetails/?locationId="+location+"&companyId="+company_id,
callback=self.parseLocation,
meta={'company_id': company_id, 'item': item})
E finalmente
def parseLocation(self,response):
hxs = HtmlXPathSelector(response)
item = response.meta['item']
dl = hxs.select("//dl")
if len(dl)>0:
address = hxs.select("//dl[1]/dd").extract()
loc = {'address':remove_entities(replace_escape_chars(replace_tags(address[0], token=' '), replace_by=''))}
yield loc
locations_select = hxs.select("//select/option/@value").extract()
if len(locations_select)>0:
yield self.fetchLocations(locations_select, response.meta['company_id'], item)
Parece que não consigo fazer isso funcionar ...