Ich fand response.xpath() Methode undichte Speicher während der Verwendung von scrapy, um eine Spinne zu schreiben. hier ist der Code:scrapy response.xpath() verursacht Speicherverlust
def extract_data(self, response):
aomen_host_water = None
aomen_pankou = None
aomen_guest_water = None
sb_host_water = None
sb_pankou = None
sb_guest_water = None
# response.xpath('//div[@id="webmain"]/table[@id="odds"]/tr')
# for tr in all_trs:
# # cname(company name)
# cname = tr.xpath('td[1]/text()').extract()
# if len(cname) == 0:
# continue
# # remove extra space and other stuff
# cname = cname[0].split(' ')[0]
# if cname == u'澳彩':
# aomen_host_water = tr.xpath('td[9]/text()').extract()
# if len(aomen_host_water) != 0:
# aomen_pankou = tr.xpath('td[10]/text()').extract()
# aomen_guest_water = tr.xpath('td[11]/text()').extract()
# else:
# aomen_host_water = tr.xpath('td[6]/text()').extract()
# aomen_pankou = tr.xpath('td[7]/text()').extract()
# aomen_guest_water = tr.xpath('td[8]/text()').extract()
# elif cname == u'SB':
# sb_host_water = tr.xpath('td[9]/text()').extract()
# if len(sb_host_water) != 0:
# sb_pankou = tr.xpath('td[10]/text()').extract()
# sb_guest_water = tr.xpath('td[11]/text()').extract()
# else:
# sb_host_water = tr.xpath('td[6]/text()').extract()
# sb_pankou = tr.xpath('td[7]/text()').extract()
# sb_guest_water = tr.xpath('td[8]/text()').extract()
# if (aomen_host_water is None) or (aomen_pankou is None) or (aomen_guest_water is None) or \
# (sb_host_water is None) or (sb_pankou is None) or (sb_guest_water is None):
# return None
# if (len(aomen_host_water) == 0) or (len(aomen_pankou) == 0) or (len(aomen_guest_water) == 0) or \
# (len(sb_host_water) == 0) or (len(sb_pankou) == 0) or (len(sb_guest_water) == 0):
# return None
# item = YPItem()
# item['aomen_host_water'] = float(aomen_host_water[0])
# item['aomen_pankou'] = aomen_pankou[0].encode('utf-8') # float(pankou.pankou2num(aomen_pankou[0]))
# item['aomen_guest_water'] = float(aomen_guest_water[0])
# item['sb_host_water'] = float(sb_host_water[0])
# item['sb_pankou'] = sb_pankou[0].encode('utf-8') # float(pankou.pankou2num(sb_pankou[0]))
# item['sb_guest_water'] = float(sb_guest_water[0])
item = YPItem()
item['aomen_host_water'] = 1.0
item['aomen_pankou'] = '111' # float(pankou.pankou2num(aomen_pankou[0]))
item['aomen_guest_water'] = 1.0
item['sb_host_water'] = 1.0
item['sb_pankou'] = '111' # float(pankou.pankou2num(sb_pankou[0]))
item['sb_guest_water'] = 1.0
return item
hier i die nützlichen Aussagen kommentiert und verwendet gefälschte Daten, Spinne über 45M Speicher verwendet, wenn ich die kommentierten Zeilen unkommentiert, Spinne verwendet, um 100 + M-Speicher und die Speicherauslastung kontinuierlich ansteigt. Hat jemand diese Art von Problem schon einmal getroffen?
i gerade versucht, die erste Zeile Kommentar-, die Speichernutzung der Spinne ist immer noch hoch und steigt kontinuierlich – bob
@bob okay, es bekam, überprüfen Sie bitte, das Update. – alecxe
danke irgendeinen weg – bob