【发布时间】:2014-03-04 22:22:32
【问题描述】:
我正在抓取的网站包含许多玩家,当我点击任何玩家时,我都可以转到他的页面。
网站结构是这样的:
<main page>
<link to player 1>
<link to player 2>
<link to player 3>
..
..
..
<link to payer n>
</main page>
当我点击任何链接时,我会进入玩家的页面,如下所示:
<player name>
<player team>
<player age>
<player salary>
<player date>
我想淘汰所有年龄在 20 到 25 岁之间的玩家。
我在做什么
使用第一个蜘蛛抓取主页。
获取链接使用第一个蜘蛛。
使用第二个蜘蛛抓取每个链接。
使用第二个蜘蛛获取玩家信息。
将此信息保存在 json 文件中使用管道。
我的问题
如何将date 值从second spider 返回到first spider
我尝试过的
我构建了自己的中间件并覆盖了process_spider_output。它允许我打印请求,但我不知道我还应该做什么才能将 date 值返回给我的第一个蜘蛛
感谢任何帮助
编辑
以下是部分代码:
def parse(self, response):
sel = Selector(response)
Container = sel.css('div[MyDiv]')
for player in Container:
extract LINK and TITLE
yield Request(LINK, meta={'Title': Title}, callback = self.parsePlayer)
def parsePlayer(self,response):
player = new PlayerItem();
extract DATE
return player
为了方便你,我给你的是通用代码,而不是非常具体的细节
【问题讨论】:
-
spider 你的意思是callback?你能展示一下你的蜘蛛代码吗?
-
@pault。好的,我会告诉你的。我会发布代码,但我要在 2 小时后才能使用,因为笔记本电脑的电池将在 20 分钟后耗尽,我要到 2 小时才能到家,所以如果我迟到了,请原谅我
-
@pault。我回来了,我编辑了问题。
-
我认为您无法将第二个回调的内容传回第一个回调。但是您可以像处理
Title字段一样将数据从第一个回调传递到第二个回调。为什么需要将数据反馈给第一个回调? -
确实不清楚为什么需要将
date从第二个函数传递给第一个函数(一个蜘蛛,两个函数)。如果您需要通过管道保存日期,为什么不将其保存到播放器项目中?
标签: python python-2.7 scrapy