Scrapy - Rastrear múltiples páginas por artículo
Estoy intentando rastrear algunas páginas adicionales por elemento para obtener información de ubicación.
Al final del artículo, antes de devolverlo, verifico si necesitamos rastrear páginas adicionales para obtener la información, esencialmente estas páginas contienen algunos detalles de ubicación y son una simple solicitud de obtención.
Es decir.http://site.com.au/MVC/Offer/GetLocationDetails/?locationId=3761&companyId=206
El enlace anterior devuelve una selección con más páginas para rastrear, o un dd / dt con los detalles de la dirección. De cualquier manera, necesito extraer la información de esta dirección y adjuntarla a mi elemento ['ubicaciones']
Hasta ahora tengo (al final del bloque de análisis)
return self.fetchLocations(locations_selector, company_id, item)
locations_selector contiene una lista de locationIds
Luego tengo
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})
Y 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 no puedo hacer que esto funcione ...