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.
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
Teşekkürler! Bir geri arama işlevi arıyordum ama bir sebepten bunu bulamadım. – espais