美文网首页Python scrapy首页投稿(暂停使用,暂停投稿)
关于解决scrapy爬虫函数之间传值的问题

关于解决scrapy爬虫函数之间传值的问题

作者: Vissioon | 来源:发表于2016-03-19 21:40 被阅读2272次

有的时候我们爬取数据的时候需要在多个页面之间跳转,爬取完所有页面的数据的时候才能把所有数据一起存到数据库,这个时候我们就需要把某个函数内爬取的数据传到下一个函数当中。
有人可能会说,为什么不用全局变量呢?这是因为scrapy自带多线程机制,好几个线程同时跑,用全局变量很不明智,除非顺序逻辑非常清楚的程序。
这个时候我们就要用到scrapy中Request方法的meta参数

def first(self, response)
code = response.xpath('*****').extract()[0]
yield FormRequest(url=url,
meta={
    'code':code
}, 
formdata={},
callback=self.next)

meta和formdata属性一样,是一个字典,这里面我们把从网页中爬取到的code值放在meta中传入下一个函数

def next(self, response)
code = response.meta["code"]

在下一个函数当中我们就可以从response对象当中取得meta中的code值,这里就可以确保两个函数中code的值是完全一致的。

相关文章

网友评论

  • 胖腚猴:你好,如果时重复传递,我每次传递过去的值都是一样的。。
  • e0988ce6e313:为什么我在传值之前有的,在传递之后就没有了,求解

本文标题:关于解决scrapy爬虫函数之间传值的问题

本文链接:https://www.haomeiwen.com/subject/sbihlttx.html