2016-04-08 23 views
1

Belki de basit bir şeyleri özlüyorum, bu yüzden umarım bu kolay bir sorudur. Bir dizin listesini ayrıştırmak için Scrapy'yi kullanıyorum ve her uygun web sayfasını (aslında bir metin dosyası) aşağı çekip Python'u kullanarak ayırıyorum.Tarayıcıdaki İstekler listesinden toplu veri

Her sayfa, ilgilendiğim bir dizi veriye sahiptir ve her sayfada böyle bir öğeyle karşılaştığımda her zaman genel bir sözlük güncelliyorum.

gibi ne yapmam gerekiyorsa, tüm İstek çağrıları tamamlandığında bir özet özetini yazdırmanız yeterlidir, ancak yield komutu hiçbir şey çalışmadığında. Sanırım, yield aslında bir jeneratörü döndürüyor ve kurtarıyor.

Mümkünse her bir Request nesnesi için bir dosya yazmaktan kaçınmak istiyorum ... Kendisini bu Python komut dosyasında saklı tutmak isterim.

Sen kapatmış
from scrapy.spider import BaseSpider 
from scrapy.selector import Selector 
from scrapy.http import Request 

slain = {} 

class GameSpider(BaseSpider): 
    name = "game" 
    allowed_domains = ["example.org"] 
    start_urls = [ 
    "http://example.org/users/deaths/" 
    ] 

    def parse(self, response): 
    links = response.xpath('//a/@href').extract() 
    for link in links: 
     if 'txt' in link: 
     l = self.start_urls[0] + link 
     yield Request(l, callback=self.parse_following, dont_filter=True) 

# Ideally print out the aggregate after all Requests are satisfied  
# print "-----" 
# for k,v in slain.iteritems(): 
#  print "Slain by %s: %d" % (k,v) 
# print "-----" 

    def parse_following(self, response): 
    parsed_resp = response.body.rstrip().split('\n') 
    for line in parsed_resp: 
     if "Slain" in line: 
     broken = line.split() 
     slain_by = broken[3] 

     if (slain_by in slain): 
      slain[slain_by] += 1 
     else: 
      slain[slain_by] = 1 

cevap

1

(nedeni) işlevi, ne zaman örümcek bitirir denir: Burada

kullanıyorum kodudur.

def closed(self, reason): 
    for k,v in self.slain.iteritems(): 
     print "Slain by %s: %d" % (k,v) 
+0

Teşekkürler! Bir geri arama işlevi arıyordum ama bir sebepten bunu bulamadım. – espais

İlgili konular