Złomowanie - Przeszukiwanie wielu stron na element
Próbuję zaindeksować kilka dodatkowych stron na element, aby pobrać informacje o lokalizacji.
Na końcu elementu przed zwrotem sprawdzam, czy musimy zaindeksować dodatkowe strony, aby pobrać informacje, zasadniczo te strony zawierają pewne szczegóły dotyczące lokalizacji i są prostym żądaniem pobrania.
To znaczy.http://site.com.au/MVC/Offer/GetLocationDetails/?locationId=3761&companyId=206
Powyższy link zwraca wybór z większą liczbą stron do przeszukania - lub dd / dt z danymi adresu. Tak czy inaczej, muszę wyodrębnić te dane adresowe i dodać je do mojego przedmiotu [„lokalizacje”]
Do tej pory mam (na końcu bloku analizy)
return self.fetchLocations(locations_selector, company_id, item)
lokalizator_ lokalizatorów zawiera listę lokalizacjiIds
Wtedy ja mam
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})
I w końcu
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)
Nie wydaje mi się, żeby to działało ....