【发布时间】:2014-04-23 22:10:09
【问题描述】:
我正试图在 Scrapy 完成工作后存储一些数据(即在它完成了我问他的每个 URL 之后)。 每次 Scrapy 解析一些结果(通过蜘蛛类中的解析函数)时,我都会将一些信息附加到类本身的现有全局对象中。我想最后访问那个对象,如果可能的话,从 Python 脚本中做所有事情。这是我的蜘蛛代码:
from scrapy.spider import Spider
from scrapy.selector import Selector
from nltk.corpus import stopwords
from newsScrapy.items import NewsscrapyItem
class newsScrapySpider(Spider):
name = "newsScrapy"
start_urls = []
global wordMatrix
wordMatrix = {}
global prefix
prefix = "http://www.nytimes.com/indexes/"
sufix = "/todayspaper/index.html"
for year in range (2000,2015):
for month in range (1,13):
for day in range (1,32):
if(month<10 and day<10):
start_urls.append (prefix+str(year)+"/"+"0"+str(month)+"/"+"0"+str(day))
elif (month<10 and day>9):
start_urls.append (prefix+str(year)+"/"+"0"+str(month)+"/"+str(day))
elif (month>9 and day<10):
start_urls.append (prefix+str(year)+"/"+str(month)+"/"+"0"+str(day))
else:
start_urls.append (prefix+str(year)+"/"+str(month)+"/"+str(day))
def parse(self, response):
sel = Selector(response)
items = []
text = sel.xpath('//body//text()').re('(\w+)')
item = NewsscrapyItem()
item['body'] = text
item['date'] = response.url.strip(prefix)
items.append(item)
for word in item['body']:
word = word.strip(' ').strip(',').strip('\n')
word = word.lower()
if (not word in stopwords.words('english')):
if(wordMatrix.__contains__((word, item['date']))):
wordMatrix[word,item['date']]+=1
else:
wordMatrix[word, item['date']]=1
# print wordMatrix
return items
我们的想法是在抓取结束后访问 wordMatrix 变量(一旦收集了所有数据)并从另一个 Python 脚本中执行此操作(用于绘制每个示例)。 非常感谢!
【问题讨论】:
标签: python web-crawler scrapy