Scrapy - Durchforsten mehrerer Seiten pro Element
Ich versuche, ein paar zusätzliche Seiten pro Element zu durchsuchen, um Standortinformationen abzurufen.
Am Ende des Artikels überprüfe ich vor der Rücksendung, ob zusätzliche Seiten durchsucht werden müssen, um die Informationen abzurufen. Im Wesentlichen enthalten diese Seiten einige Standortdetails und sind eine einfache Anforderung zum Abrufen.
Das heißthttp://site.com.au/MVC/Offer/GetLocationDetails/?locationId=3761&companyId=206
Der obige Link gibt entweder eine Auswahl mit mehr zu durchsuchenden Seiten zurück - oder ein dd / dt mit den Adressdetails. In beiden Fällen muss ich diese Adressinformationen extrahieren und an meinen Artikel anhängen ['Orte'].
Soweit ich habe (am Ende des Analyseblocks)
return self.fetchLocations(locations_selector, company_id, item)
locations_selector enthält eine Liste von locationIds
Dann habe ich
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})
Und schlussendlich
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)
Kann nicht scheinen, dieses Arbeiten zu erhalten….