Ich weiß, dass es mehrere verwandte Threads gibt, und sie haben mir sehr geholfen, aber ich kann immer noch nicht den ganzen Weg. Ich bin an dem Punkt, wo die Ausführung des Codes nicht zu Fehlern führt, aber ich bekomme nichts in meiner csv
Datei. Ich habe folgende Scrapy
Spinne, die auf einer Webseite startet, folgt dann einen Hyperlink, und schabt die verknüpfte Seite:Folgende Hyperlink und "Gefiltert Offsite-Anfrage"
from scrapy.http import Request
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from scrapy.item import Item, Field
class bbrItem(Item):
Year = Field()
AppraisalDate = Field()
PropertyValue = Field()
LandValue = Field()
Usage = Field()
LandSize = Field()
Address = Field()
class spiderBBRTest(BaseSpider):
name = 'spiderBBRTest'
allowed_domains = ["http://boliga.dk"]
start_urls = ['http://www.boliga.dk/bbr/resultater?sort=hus_nr_sort-a,etage-a,side-a&gade=Septembervej&hus_nr=29&ipostnr=2730']
def parse2(self, response):
hxs = HtmlXPathSelector(response)
bbrs2 = hxs.select("id('evaluationControl')/div[2]/div")
bbrs = iter(bbrs2)
next(bbrs)
for bbr in bbrs:
item = bbrItem()
item['Year'] = bbr.select("table/tbody/tr[1]/td[2]/text()").extract()
item['AppraisalDate'] = bbr.select("table/tbody/tr[2]/td[2]/text()").extract()
item['PropertyValue'] = bbr.select("table/tbody/tr[3]/td[2]/text()").extract()
item['LandValue'] = bbr.select("table/tbody/tr[4]/td[2]/text()").extract()
item['Usage'] = bbr.select("table/tbody/tr[5]/td[2]/text()").extract()
item['LandSize'] = bbr.select("table/tbody/tr[6]/td[2]/text()").extract()
item['Address'] = response.meta['address']
yield item
def parse(self, response):
hxs = HtmlXPathSelector(response)
PartUrl = ''.join(hxs.select("id('searchresult')/tr/td[1]/a/@href").extract())
url2 = ''.join(["http://www.boliga.dk", PartUrl])
yield Request(url=url2, meta={'address': hxs.select("id('searchresult')/tr/td[1]/a[@href]/text()").extract()}, callback=self.parse2)
Ich versuche, die Ergebnisse in eine CSV-Datei zu exportieren, aber ich habe nichts die Datei. Das Ausführen des Codes führt jedoch nicht zu Fehlern. Ich weiß, es ist ein einfaches Beispiel mit nur einer URL, aber es zeigt mein Problem.
Ich denke mein Problem könnte sein, dass ich nicht Scrapy
erzähle, dass ich die Daten in der Parse2
Methode speichern möchte.
BTW, ich laufe die Spinne als scrapy crawl spiderBBR -o scraped_data.csv -t csv
Wird 'parse2' aufgerufen - ich kann nicht sehen, woher es kommt. Es scheint auch nichts zu geben, das versucht, in eine CSV-Datei zu schreiben. –
@SteveAllison: Ups, das ist ein Tippfehler. Ich habe es so geändert, dass ich 'parse2' als Callback in der Anfrage in' parse' nenne, aber es funktioniert immer noch nicht. – Mace