1
也許我缺少一些簡單的東西,所以我希望這是一個簡單的問題。我使用Scrapy解析目錄列表,然後拉下每個合適的網頁(實際上是一個文本文件)並使用Python解析出來。從一個履帶式的請求列表中的數據集合
每個頁面都有一組我感興趣的數據,每當我在每個頁面中遇到這樣的項目時,我都會更新全局字典。
我會像要做的只是在所有請求調用完成後打印彙總摘要,但在yield
命令沒有運行後。我假設,因爲yield
實際上是返回一個發電機和救助。
我想避免每個Request
對象都寫一個文件,如果可能的話......我寧願將它自包含在這個Python腳本中。
這裏是我使用的代碼:
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
謝謝!我正在尋找一個回調函數,但由於某種原因找不到這一個。 – espais