现在需求是这样的,我有一个 parse 去解析页面,我要算一个商品的总价格,但是,商品的某一个属性的价格呢,我不能确定,需要依靠另一个 Request 去跑一个页面。关键就是在我跑另一个 request,怎么把数据告诉 parse 方法。别说什么 callback,这个我当然知道!肯定不能用 callback 去解决吧!下面上代码:
def parse(self, response):
#计算商品价格......
......
yield scrapy.Request(url, callback=self.parseNext)
def parseNext(self, response):
#扒页面的相关数据
.......拿到具体价格
这儿怎么把数据返回到 parse 方法中去,我好计算价格,总不能用 return 吧!
1
ioven 2018-11-18 20:17:27 +08:00
加入 meta
yield scrapy.Request(url, callback=self.parseNext, meta={'price': '99'}) parseNext 中 price = response.price['index'] #99 |
2
moxiaowei OP @ioven 你这个是 parse 往 parseNext 中传值,我需要的是 parseNext 往 parse 中传值
|
3
raptium 2018-11-18 20:26:13 +08:00 via iPhone
抓取和业务逻辑为啥要耦合这么紧呢,都抓完存下来想怎么算都行啊
|
7
largecat 2018-11-18 21:20:44 +08:00 via Android
def parse
xxx xxxx run parse next calculate price return price def parsenext xxx xxxx .return xxxxx 这样不行吗? |
8
largecat 2018-11-18 21:21:39 +08:00 via Android
顺序执行,在 parse next 里计算价格啊,
很朴实的逻辑 |
10
Leigg 2018-11-19 09:18:02 +08:00 via iPhone
meta 把数据带着
|
11
Northxw 2018-11-19 09:46:03 +08:00
我不知道流程是啥! 我就想说,处理数据放在 Item,单定义一个 item, 得到某个属性的字段,到 Pipeline 再去算总价。如果不合心意,就先记录下来,一一对应, 最后另作处理。
|
12
15399905591 2018-11-23 13:36:19 +08:00
你可以把 parse 的 response 通过 meta 传递到 parseNext 中进行处理。
|